2009-08-30 8 views
0

この問題は本当に私を抱きしめています。私は大規模なJavaソフトウェアのためのいくつかのプラグインライブラリを書いた。私の開発コンピュータでは、すべてうまく動作します。しかし、Nullsoft Installerでソフトウェアをコンパイルしてラップして別のコンピュータにインストールした後、私が開発したネイティブdllプラグイン以外のものはすべて実行され、System.loadLibraryを呼び出すとUnsatisfiedLinkErrorが返されます。インストーラは私のdevのコンピュータ上で動作し、インストールされたソフトウェアは元のソフトウェアを移動した後も正常に動作します。ネイティブライブラリは、.NET(C++/CLI)でdevedさJava LoadLibrary UnsatisfiedLinkError、Javaはファイルを見ることができますが、別のコンピュータで動作します

  • 新しいコンピュータ上のソフトウェアは、右のライブラリパスをロードしているJNI

  • での浮き、見ることができます:ここでは、私が知っているものですネイティブdll。 Javaでは、Fileクラスを使用してファイルのパーミッションをチェックするためのセグメントを追加しましたが、Javaはlibrary_dll.canRead()およびlibrary_dll.canWrite()ではうまく動作しますが、library_dll.canExecute()ではハング/クラッシュします。

誰でも私を助けることができるなら、私は本当にそれを感謝します!皆さん、ありがとうございました!

+0

UnsatisfiedLinkErrorに含まれるメッセージ/スタックは、問題を特定する上で重要です。回答はあなたがそれを含めるまで推測することしかできません。 –

+0

プログラムを実行するときに-Djava.library.pathを指定していますか? –

答えて

0

対象のコンピュータに.NETがインストールされていて、正しいバージョンの.NETがインストールされていますか?

私はこれまで.NET/JNI interopを実行したとは言えません。物事を簡単にするためにJNBridgeを使ってみましたか?

0

ありがとうJon!いいえ。対象のコンピュータには.NETがインストールされていません(少なくとも既定のWindowsのもの以上はありません)。しかし、JAVA/JNIのようにDLLをロードすることはできないようです...私は.NETフレームワークをインストールしようとします。

.NET/JNI interopは難しい部分ではありませんでした。トリッキーでしたが、それほど難しくありませんでした。

0

問題を引き起こしているコンピュータでFileMonを実行して、アプリケーションを実行しようとするとよいでしょう。 FileMonがデータをキャプチャすると、Javaアプリケーションによって行われたすべてのファイルアクセスが表示され、正確なエラーが表示され、UnsatisfiedLinkエラーが発生するはずです。たとえば、JNI DLLのいくつかの依存関係が他のコンピュータに存在しないことがあります(これは、セキュリティ/権限エラーが発生した後の可能性があります)。

関連する問題