8

dll ファイルのロード中に、次の例外が発生します。

Exception in thread "main" java.lang.UnsatisfiedLinkError:
  D:\Transliteration\rlpnc-3.1.0-sdk-ia32-w32-msvc80\rlp\bin\ia32-w32-msvc80\btrntjni.dll: 
  The system cannot find message text for message number 0x%1 in the message file for %2

at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.load0(Unknown Source)
at java.lang.System.load(Unknown Source)
at com.basistech.util.internal.Native.loadLibrary(Unknown Source)
at com.basistech.rnt.jni.<clinit>(Unknown Source)
at com.basistech.rnt.RNTEnvironment.<init>(Unknown Source)
at SampleTranslator.<init>(TranslateNameSample.java:88)
at TranslateNameSample.main(TranslateNameSample.java:62)

問題の根本原因がわからない。誰でもこの問題を解決するのを手伝ってくれますか?

ありがとう、バスカー

4

6 に答える 6

5

私はあなたが使おうとしている製品を製造している会社で働いています。他の人が示唆したように、依存する DLL が見つからないため、同梱されている下位レイヤーの互換性のないバージョンに対してインストールされたときに、このエラーが発生しました。さらにサポートが必要な場合は、お気軽にサポート チームにお問い合わせください。

于 2010-09-21T01:38:04.187 に答える
2

これはクラスパスとは関係ありません。DLL を現在のディレクトリ、PATH 環境変数にリストされているディレクトリの 1 つ、またはシステム プロパティ java.library.path を使用して設定されたネイティブ ライブラリ検索パスに配置します。

java -Djava.library.path=C:\MyNativeLibs MyMainClass
于 2010-03-09T11:24:14.633 に答える
1

私自身はこの問題を見たことがありませんが、エラーメッセージから、DLLに必要な依存関係が欠落しているか、バージョンが正しくないように思われます。

このツールが役立つ場合があります:http ://www.dependencywalker.com/

于 2010-04-09T11:02:17.223 に答える
1

DLL へのパスが正しい環境変数に設定されていることを確認するだけでなく、次のことも確認する必要があります。

  • ロードしている DLL は、すべての依存関係が満たされています。つまり、この DLL が他の DLL に依存している場合は、それらの DLL も検出できることを確認してください。

  • 読み込まれる DLL がマニフェストを使用して特定の DLL を指定する場合は、(マニフェストで指定されたバージョンの) DLL もマシン上 (または必要に応じて GAC 内) にあり、見つけることができることを確認してください。

  • Java コードで参照されているすべての DLL 関数が正しく定義およびエクスポートされていることを確認し、Java コードが期待するものと同じデータ型をエクスポートします。これによって DLL の読み込みが停止することはありませんが、次の段階 (リンク アドレスの解決や機能する関数の作成) が台無しになる可能性がありますが、予期しない方法で失敗します。

これでたくさんの楽しみがあります-つまずくための小さなことがたくさんあります。私は数年前に、古いJNIスタイルと新しいJNIスタイルを備えたさまざまなバージョンのJavaを操作するテキスト読み上げパッケージ(DLL内のCおよびC ++)をいじりながら、これに対処しなければなりませんでした。なんて混乱!

于 2010-03-11T19:26:29.100 に答える
-1

Check that the "java.library.path" contains the folder containing .dll file.
On windows machine it is related to PATH.
http://www.inonit.com/cygwin/jni/helloWorld/load.html

于 2010-03-09T07:54:59.480 に答える