2015-11-28 130 views
0

我试图运行的代码如下:的NetBeans java.lang.UnsatisfiedLinkError中:没有rxtxSerial中的java.library.path扔在加载gnu.io.RXTXCommDriver

package serialiotest; 

    import gnu.io.*; 
    import java.io.*; 
    import java.util.*; 

    public class SerialIOTest 
    { 
    public static void main(String[] args) 
     { 
     System.out.println("Starting"); 
     java.util.Enumeration<CommPortIdentifier> portEnum 
       = CommPortIdentifier.getPortIdentifiers(); 

     while (portEnum.hasMoreElements()) 
      { 
      CommPortIdentifier portIdentifier 
        = portEnum.nextElement(); 

      System.out.println(portIdentifier.getName() + " - " 
       + getPortTypeName(portIdentifier.getPortType())); 
      } 
     } 

    static String getPortTypeName (int portType) 
     { 
     switch(portType) 
      { 
      case CommPortIdentifier.PORT_I2C: 
       return "I2C"; 
      case CommPortIdentifier.PORT_PARALLEL: 
       return "pParallel"; 
      case CommPortIdentifier.PORT_RAW: 
       return "RAW"; 
      case CommPortIdentifier.PORT_RS485: 
       return "RS485"; 
      case CommPortIdentifier.PORT_SERIAL: 
       return "Serial"; 
      default: 
       return "unknown type"; 
      } 
     } 
    } 

产生的错误信息是:

 run: 
     Starting 
     java.lang.UnsatisfiedLinkError: 
      no rxtxSerial in ava.library.path  
      thrown while loading gnu.io.RXTXCommDriver 
     Exception in thread "main" java.lang.UnsatisfiedLinkError: 
      no rxtxSerial in java.library.path 
      at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864) 
      at java.lang.Runtime.loadLibrary0(Runtime.java:870) 
      at java.lang.System.loadLibrary(System.java:1122) 
      at gnu.io.CommPortIdentifier.<clinit> 
       (CommPortIdentifier.java:123) 
      at serialiotest.SerialIOTest.main(SerialIOTest.java:16) 
      Java Result: 1 
      BUILD SUCCESSFUL (total time: 1 second) 

生成的输出是:

  ant -f /home/crazyprof/NetBeansProjects/serialIOTest 
       -Dnb.internal.action.name=rebuild clean jar 
      init: 
    deps-clean: 
    Updating property file: /home/crazyprof/NetBeansProjects/serialIOTest 
     /build/built-clean.properties 
    Deleting directory /home/crazyprof/NetBeansProjects/serialIOTest 
     /build 
    clean: 
    init: 
    deps-jar: 
    Created dir: /home/crazyprof/NetBeansProjects/serialIOTest/build 
    Updating property file: /home/crazyprof/NetBeansProjects/serialIOTest 
     /build/built-jar.properties 
    Created dir: /home/crazyprof/NetBeansProjects/serialIOTest/build 
     /classes 
    Created dir: /home/crazyprof/NetBeansProjects/serialIOTest/build 
     /empty 
    Created dir: /home/crazyprof/NetBeansProjects/serialIOTest/build 
     /generated-sources/ap-source-output 
    Compiling 1 source file to /home/crazyprof/NetBeansProjects 
     /serialIOTest/build/classes 
    Note: /home/crazyprof/NetBeansProjects/serialIOTest/src/serialiotest 
     /SerialIOTest.java uses unchecked or unsafe operations. 
    Note: Recompile with -Xlint:unchecked for details. 
    compile: 
    Created dir: /home/crazyprof/NetBeansProjects/serialIOTest/dist 
    Copying 1 file to /home/crazyprof/NetBeansProjects/serialIOTest/build 
    Copy libraries to /home/crazyprof/NetBeansProjects/serialIOTest 
      /dist/lib. 
    Building jar: /home/crazyprof/NetBeansProjects/serialIOTest 
     /dist/serialIOTest.jar 
    To run this application from the command line without Ant, try: 
    java -jar "/home/crazyprof/NetBeansProjects/serialIOTest 
     /dist/serialIOTest.jar" 
    jar: 
    BUILD SUCCESSFUL (total time: 23 seconds) 

我是新来的Ubuntu 14.04这样的答案必须是公平的详细说明。

回答

0

错误很明显rxtx本地库不在你的java.library.path中。有许多方法将它们添加到您的java.library.path:

  • 您可以添加他们通过将合适的* .so文件的文件夹中,然后添加-Djava.library.path=folder到你的java命令。
  • 您可以将* .so文件放在您的JAVA_HOME/lib /(amd64/i386)文件夹中。虽然我不建议这一个,因为它是凌乱

如果你已经这样做了,你可以检查你的图书馆有一定的相关性在您的*。所以执行ldd命令丢失。

+0

马丁内斯先生:我感谢你。我会试着看看会发生什么。 – CrazyProf

相关问题