2012-07-10 42 views
2

我在连接java中的jnilib时遇到了一些问题。我收到 Exception in thread "main" java.lang.UnsatisfiedLinkError: no ***.jnlib in java.library.path。 通过我的研究,我发现这可能是由java不知道文件是什么造成的。所以,我告诉它,它在Mac文件夹中。我还将该文件添加到项目中的每个其他文件夹。这一切都没有帮助。该项目是跨平台,所以我试图在Windows上的DLL加载就好了,当我告诉Java看在Windows文件夹。我不明白为什么这可以在Windows而不是在Mac上工作。任何想法或想法都会受到欢迎。JNI UnsatisfiedLinkError .jnilib不喜欢

异常输出是:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no libhidapi-jni-64.jnilib 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 webstart.OmronIO.<init>(OmronIO.java:30) 
     at webstart.Omron.main(Omron.java:13) 

的的java.library.path是:/卷/ UNTITLED/javahidapi/MAC。

jinlib的路径是:/卷/ UNTITLED/javahidapi/mac。

回答

0

在OSX上,环境变量DYLD_LIBRARY_PATH用于查找共享库(包括.jnilib)。该变量是用来初始化java.library.path的。

如果您在尝试System.loadLibrary()的位置输出java.library.path的值,则会看到您尝试加载的库搜索的目录列表。

编辑

又见http://create-lab-commons.googlecode.com/svn-history/r222/trunk/java/lib/HIDAPI/README.txt,这似乎适用于您正在试图加载(hidapi)的特定库,而你尝试加载它(在webstart)的方式。

+0

输出具有到.jnlp文件的路径。我仔细检查了我拼写正确,并且.jnlp文件确实在返回的路径中。 – Thinmint 2012-07-10 20:15:15

+0

如果您没有包含实际的异常输出,请复制/粘贴jnilib位置和java.library.path内容,则无法说明您是在简单地忽略某些内容还是在您的问题中进行错字输入。还有可能是你有一个加载问题(错误的体系结构?),但是那些通常会显示更具体的错误消息。 – technomage 2012-07-11 11:14:27

+0

异常输出是:'在线程中的异常“主”java.lang.UnsatisfiedLinkError:否在java.library.path中的libhidapi-jni-64.jnilib \t at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758) \t at java.lang.Runtime.loadLibrary0(Runtime.java:823) \t at java.lang.System.loadLibrary(System.java:1045) \t at webstart.OmronIO。 (OmronIO.java:30) \t at webstart.Omron.main(Omron.java:13)' java.library.path是/Volumes/UNTITLED/javahidapi/mac.jinlib的路径是/ Volumes/UNTITLED/javahidapi/MAC。对不起,错字。 – Thinmint 2012-07-11 14:13:03