2016-05-31 7 views
0

Jamodシリアルマスタコードを使用してCOM1ポートに接続されたデバイスとの接続を確立しようとしています。以下は私のコードです:java.lang.UnsatisfiedLinkError:Ubuntu 14.04のjava.library.pathにrxtxSerialはありませんJamodシリアル

SerialConnection connection = null; 
public void connection() { 
    ModbusCoupler.getReference().setUnitID(1); 
    SerialParameters params = new SerialParameters(); 
    params.setPortName("COM1"); 
    params.setBaudRate(9600); 
    params.setDatabits(8); 
    params.setParity("None"); 
    params.setEncoding(Modbus.SERIAL_ENCODING_ASCII); 
    params.setEcho(false); 
    params.setStopbits(1); 

    try { 
     connection = new SerialConnection(params); 
     connection.open(); 
     connection.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

私はMavenを使い、このコードをUbuntu 14.04で実行しています。 Ubuntu 14.04にRXTXをインストールするには、このlinkに従ってください。 librxtxSerial.so/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/RXTXcomm.jarから/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/extにコピーしました。

は私のMavenのコードです:私は他のソリューションのようなstackoverflowの上で提案してみました

Caused by: java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path 
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)[:1.8.0_91] 
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)[:1.8.0_91] 
    at java.lang.System.loadLibrary(System.java:1122)[:1.8.0_91] 
    at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83) 
    at net.wimpi.modbus.net.SerialConnection.open(SerialConnection.java:87) 
    at modbus.Serial.connection(SerialDataSource.java:43) //connection.open() 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.8.0_91] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[:1.8.0_91] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.8.0_91] 
    at java.lang.reflect.Method.invoke(Method.java:498)[:1.8.0_91] 
    at org.apache.camel.component.bean.MethodInfo.invoke(MethodInfo.java:408) 
    at org.apache.camel.component.bean.MethodInfo$1.doProceed(MethodInfo.java:279) 
    at org.apache.camel.component.bean.MethodInfo$1.proceed(MethodInfo.java:252) 

:私は、コードを実行しようとすると、私はこの次のエラーを取得しています

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <camel.version>2.12.1</camel.version> 
    <github.global.server>github</github.global.server> 
    <camel-version>2.16.2</camel-version> 
    <junit-version>4.11</junit-version> 
    <log4j-version>1.2.17</log4j-version> 
    <slf4j-version>1.7.12</slf4j-version> 
    <jackson-version>2.6.3</jackson-version> 
    <build.serial.gnu>true</build.serial.gnu> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.4</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-core</artifactId> 
     <version>${camel.version}</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.servicemix.bundles</groupId> 
     <artifactId>org.apache.servicemix.bundles.jamod</artifactId> 
     <version>1.2_1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>${junit-version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>1.0.2</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-test</artifactId> 
     <version>${camel.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.mockito</groupId> 
     <artifactId>mockito-core</artifactId> 
     <version>1.8.5</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>net.wimpi</groupId> 
     <artifactId>jamod</artifactId> 
     <version>1.2</version> 
    </dependency> 
    <!-- http://mvnrepository.com/artifact/org.rxtx/rxtx --> 
    <dependency> 
     <groupId>org.rxtx</groupId> 
     <artifactId>rxtx</artifactId> 
     <version>2.1.7</version> 
    </dependency> 
</dependencies> 

<repositories> 
    <repository> 
     <id>apache.snapshots</id> 
     <name>Apache Snapshots Maven Repository</name> 
     <url>http://repository.apache.org/snapshots</url> 
     <releases> 
      <enabled>false</enabled> 
     </releases> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
    <repository> 
     <id>zodiac-repository</id> 
     <name>Zodiac Milestone Repository</name> 
     <url>http://zodiac.springsource.com/maven/bundles/milestone</url> 
    </repository> 
    <repository> 
     <id>com.springsource.repository.bundle.external</id> 
     <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name> 
     <url>http://repository.springsource.com/maven/bundles/external</url> 
    </repository> 
</repositories> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.12.1</version> 
      <configuration> 
       <systemPropertyVariables> 
        <net.wimpi.modbus.debug>true</net.wimpi.modbus.debug> 
        <argLine>-Djava.library.path=/usr/share/java</argLine> 
       </systemPropertyVariables> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
      <version>2.5.1</version> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-site-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <reportPlugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-project-info-reports-plugin</artifactId> 
         <version>2.4</version> 
         <configuration> 
          <dependencyDetailsEnabled>false</dependencyDetailsEnabled> 
          <dependencyLocationsEnabled>false</dependencyLocationsEnabled> 
         </configuration> 
         <!-- simpler configuration without reportSets available for usual cases --> 
         <reports> 
          <report>dependencies</report> 
          <report>scm</report> 
          <report>index</report> 
         </reports> 
        </plugin> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-javadoc-plugin</artifactId> 
         <version>2.8</version> 
         <configuration> 
          <links> 
           <link>http://jamod.sourceforge.net/apidocs/</link> 
           <link>http://camel.apache.org/maven/current/camel-core/apidocs/</link> 
          </links> 
         </configuration> 
        </plugin> 
       </reportPlugins> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <encoding>${project.build.sourceEncoding}</encoding> 
       <source>1.5</source> 
       <target>1.5</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.4.3</version> 
      <configuration> 
       <encoding>${project.build.sourceEncoding}</encoding> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
</profiles> 

librxtx-javaをインストールしても同じエラーが表示されます。この問題を解決するために私を助けてください。

答えて

1

です:

-Djava.library.path=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/librxtxSerial.so 

JVM引数は、右javaコマンドの後、メインクラスとアプリケーションのメインクラスまたはjar前に渡されます。

+0

それは働いた。ありがとうございました! – user2782405

1

ネイティブ部分をインストールする必要があります。 sudo apt-get install librxtx-javaを入力し、java.library.path/usr/lib/jniを追加してください。また、インストールされたjarファイルには、JVM引数を次のようにアプリケーションを実行してもらえ/usr/share/java/RXTXcomm.jar

+0

ありがとうございました! – user2782405

関連する問題