我开始使用Arduino与Java进行连接,这非常简单,但现在我想以编程方式加载librxtxSerial本机库,并且我弄不明白。 由于我在MacOS 64位和使用的Java6我用下面的jnilib:http://blog.iharder.net/2009/08/18/rxtx-java-6-and-librxtxserial-jnilib-on-intel-mac-os-x/为在这里推荐:http://arduino.cc/playground/Interfacing/Java如何以编程方式加载Java中的librxtxSerial
之后,我试图以编程方式加载它是这样的:
/**
* Loads the jnilib
*/
public static void loadJniLib() {
// loads the jnilib from the source folder "src/main/resources"
URL url = Demo.class.getResource("/librxtxSerial.jnilib");
try {
System.load(url.getPath());
}
catch (UnsatisfiedLinkError unsatisfiedLinkError) {
// native code library failed to load.
unsatisfiedLinkError.printStackTrace();
}
}
这似乎作品(至少不会抛出异常)。
但是,当我打电话CommPortIdentifier.getPortIdentifier(PORT_NAME);
它抛出以下异常:
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.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:1758)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1045)
at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
at fr.free.mdwhatever.arduino.maven.Demo.initialize(Demo.java:57)
at fr.free.mdwhatever.arduino.maven.Demo.main(Demo.java:102)
所以我不明白什么是错的,因为它似乎是正确的方式,根据加载它:http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#load(java.lang.String)
任何想法?
PS:你可以找到整个代码在这里:https://gist.github.com/1853637其作品所提供的RXTX罐子在类路径和本机库的位置定义(这样在Eclipse:http://www.eclipsezone.com/eclipse/forums/t49342.html)
感谢您的评论,我也尝试通过添加包含我的jnilib的文件夹并调用'System.loadLibrary(“librxtxSerial”);'也没有运气来以编程方式修改'java.library.path'。 不过,我知道我有其他的可能性,但我想以编程方式做到这一点。 – 2012-02-17 16:02:34