问题
I am trying to use the 64 bit rxtx serial communication library (downloaded from cloudhopper) with 64bit windows 7 and eclipse. I get the message:
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
. The dlls are in the /jre/lib
dir as well as the Windows/System32
. The RXTXcomm.jar
is in the build path for eclipse as well as in the jre/lib/ext
dir. I ran process monitor in the background and and see that RXTXcomm.jar
, rxtxSerial.dll
, and rxtxParallel.dll
are all found and have been opened, So I am unclear as to why this problem is occurring.
Any suggestions.
回答1:
Go to Project -> properties -> Java build path ->Find your .jar. Click on + to open the JAR's properties. Select Native library location and edit it to point to RXTX's shared library (.DLL, .so, .dylib).
回答2:
You can install librxtx-java
package from repo for Ubuntu.
回答3:
You can also add a virtual machine argument:
-Djava.library.path=c:\path\to\dll\
or
-Djava.library.path=/path/to/lib/
That worked for me. Also refer to this question.
回答4:
Windows user : my problem was actually that I was placing the rxtxSerial.dll and the rxtxParallel.dll files in the wrong directory.
In my case, they were in [...]/jdk1.7.0_09/bin/ instead of [...]/jre7/bin/, although paths may differ for different versions of Java.
After all it's logic, if we want our JAR to run outside our IDE, we must have the dlls in our java running environment, not in our development environment :)
回答5:
I resolve this problem by adding rxtxSerial.dll[jre 1.8.0_45/bin] and RxTxcomm.jar[jre 1.8.0_45/lib/ext]
回答6:
Hy, I had the same problem when integrating the RXTXcomm into Netbeans under Ubuntu 11.10. I am guessing that you are not copying the files in the right place, at least that was my problem.
Under Ubuntu java is installed under usr/lib/jvm. BUT here I had a lot of forders (ex java-7-openjdk-i386, java-7-common, java-6-openjdk ...). In Netbeans I check what is the path of the JDK included into the project, it was java-7-openjdk-i386 . so I took the rxtxSerial.so (under windows it is rxtxSerial.dll) and copied it to java-7-openjdk-i386/jre/bin and it worked like a charm .
I hope this helps.
回答7:
I was having the same problem even after installing the RXTXcomm.jar in the Java\jdk\lib directory. Based on the instructions at http://www.jcontrol.org/download/readme_rxtx_en.html I located the rxtxSerial.dll and the rxtxParallel.dll files. Placing them in the bin directory did not help, but placing them in the lib directory along with the RXTXcomm.jar solved the problem.
回答8:
I had the same problem. So I installed JDK 32-bit and added those RxTx
files(x86) to Program files(x86)/java/... folder instead of Program files/java... folder. Also I added those RxTx .dll files(x86) to /System32 folder. After that the problem was resolved in my application.
回答9:
FIXED:
when using IDE such Netbeans it has it's own directory for the JRE, were you probably installed your RXTX drivers, but when running the JAR file outside your IDE this error occurs... Solution is install the RXTX drivers also inside the JAVA JRE directory which use to run all your JAR files.
回答10:
Under Netbeans 5.5 on Windows, I needed to right-click Libraries under Projects on the left hand side of the screen, and select "Add JAR/Folder", picking the RXTXcomm.jar file. Only then did my
enter code here
become a valid command. Also, I got a run-time error where it failed to load the rxtxSerial.DLL library because it couldn't find it. I needed to right-click the project name, select properties, select Run under categories, and add a VM Options: entry of
-Djava.library.path="C:\where-ever-you-stuck-rxtxSerial.DLL-file;%PATH%
Example:
-Djava.library.path="C:\rxtx-2.1-7-bins-r2\Windows\i368-mingw32\;%PATH%"
While I'm sure there is more than one way of adding the directory to your path, this worked for me. Note I did the default NetBeans 5.5/JDK 1.6.0 isntall accepting all the default options(ie clicking next until I got to finish), so I haven't modified my java paths or anything. Alternatively you can copy the *.dll into C:\Windows\System32\, Java will find it there automatically.
Note that you cannot use the 32bit DLL when running a 64bit JRE: You will get an error similar to:
Can't load IA 32-bit .dll on a AMD 64-bit platform thrown while loading gnu.io.RXTXCommDriver
To solve this simply install the 32bit JDK and add a new Platform in Netbeans under Tools->Java Platforms->Add Platform and change the project settings to use the newly created platform. make sure you type
"import gnu.io.*"
from http://rxtx.qbang.org/wiki/index.php/Using_RXTX_In_NetBeans
回答11:
I had the same issue, on windows 10 and eclipse, the probelm was i had java for 32 and 64 bits, so i installed RXTX library for 64 bits but eclipse was using the 32 bits java enviroment, so what i did was download RXTX for 32 bits copy the necessary files to C:ProgramFilesx86/JAVA_HOME as in the instructions for RXTX and the problem was solved. Hope this helps anyone.
回答12:
I had same problem. I was trying to run built jar file from dist folder and it was not working even it was working from NetBeans IDE. I copied rxtxSerial.dll file in dist folder where my main jar file was and it started working fine.
I was having this error before:
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while
loading gnu.io.RXTXCommDriver
Exception in thread "Thread-7" java.lang.UnsatisfiedLinkError: no rxtxSerial in
java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:123)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.smslib.helper.CommPortIdentifier.<clinit>(CommPortIdentifier.java
:72)
at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java
:69)
at org.smslib.modem.AModemDriver.connect(AModemDriver.java:114)
at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:189)
at org.smslib.Service$1Starter.run(Service.java:277)
来源:https://stackoverflow.com/questions/8197639/java-lang-unsatisfiedlinkerror-no-rxtxserial-in-java-library-path