gpt4 book ai didi

java - Mac+jni+java

转载 作者:搜寻专家 更新时间:2023-11-01 00:52:18 27 4
gpt4 key购买 nike

一点背景:我有一个 java 应用程序需要与 mac 上的第三方硬件通信。他们给了我 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)

从错误来看,我的 libSmartTest7.jnilib 正在寻找库 SMARTResponseSDK

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

关于最佳方法的任何想法。

最佳答案

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

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

所以,对于您来说,我建议您看一下这里:

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

关于java - Mac+jni+java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com