Mac + jni + java

use*_*750 5 java macos sdk java-native-interface

一点背景:我有一个需要与mac上的第三方硬件通信的java应用程序.他们给了我sdk,但它不是Java.所以我试图让jnilib充当我的java应用程序和SDK之间的桥梁.

问题:我已经制作了一个与SDK对话的小样本jnilib但是当我尝试在我的java程序中使用它时出现以下错误

Exception in thread "main" java.lang.UnsatisfiedLinkError: /Users/john.doe/Desktop/eclipse/workspace/Lesson13_Jni_Smart7/bin/libSmartTest7.jnilib:  Library not loaded: build/Release/SMARTResponseSDK.framework/Versions/A/SMARTResponseSDK  Referenced from: /Users/john.doe/Desktop/eclipse/workspace/Lesson13_Jni_Smart7/bin/libSmartTest7.jnilib      
Reason: image not found
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1827)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1742)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1045)
    at com.learning.lesson13.JniSmart7.<clinit>(JniSmart7.java:6)
Run Code Online (Sandbox Code Playgroud)

从错误看起来我libSmartTest7.jnilib正在寻找图书馆SMARTResponseSDK.

我试过的,我知道SMARTResponseSDK我的Mac上的库在哪里.我尝试将它复制到eclipse中的工作文件夹但我仍然得到错误.我试过使用-DJava.library.path但我仍然得到错误.

关于什么是最好的方法的任何想法.

Oo.*_*.oO 1

一旦进入JNIjava.library.path代码,指向什么就不再重要了。

一旦进入JNILD_LIBRARY_PATH代码,您所能做的就是通过/确保库对您的代码可见DYLD_LIBRARY_PATH,或者您可以从您喜欢的任何位置动态加载库文件。

所以,我建议你看看这里:

在构建JNI库和使用rpath时,您还可以从编译标志中受益。