少し背景: 私はMac上でサードパーティのハードウェアと話す必要があるJavaアプリケーションを持っています。彼らは私にsdkを与えましたが、Javaではありません。そこで私は、JavaアプリケーションとSDKの間のブリッジとして機能するjnilibを作ろうとしています。Mac + jni + java
問題: 私は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にあるのか知っています。私は日食で私の作業フォルダにそれをコピーしようとしたが、私はまだエラーが発生します。私は-DJava.library.path
を使ってみましたが、まだエラーが出ます。
可能な限り最良のアプローチについて考えてください。
OSXでは、ライブラリはjava.library.pathまたはDYLD_LIBRARY_PATH環境変数のいずれかになければなりません。また、ライブラリーをチェックして、依存ライブラリーの特定の絶対パスを使用していないことを確認する必要があります(システムがインストールされている場所にない場合)。 – technomage
こんにちは、ありがとうございます。申し訳ありませんが、それは私の間違いのようです。 2つの「SMARTResponseSDK」ライブラリがありました。私のjnilibをビルドしている間に間違ったものを使用したように見えます。私は他の "SMARTResponseSDK"を使用し、問題は解決されているようです。 – user1216750
さらに、ネイティブコードの作成を避け、Javaから直接サードパーティライブラリにアクセスできるようにするRococoaを検討することもできます。 – technomage