1

VC ++経由でJNIを使​​用し、クラスパスのカスタムディレクトリをUTF-8文字列-Djava.class.path = c:\ myDir\my.jarとして渡そうとしています。

これはうまく機能し、FindClassを使用してjar内のメソッドを見つけることができました

ただし、ディレクトリ名に拡張ASCII文字が含まれている場合、FindClassはNoClassDefFound例外を返します。これは、JVMがjarファイルをロードできず、引数を渡す際に何か間違ったことをしているためだと思います。

これが私がすることです1)std :: wstring jarPath(L "-Djava.class.path = C:\ÆËñœ\ my.jar");を作成します。2)WideCharToMultiByteを使用してwstringをCP_UTF8に変換します。3)utf8StringをoptionStringにコピーし、JNI_CreateJavaJVMを呼び出します。

JNI_CReateJavaJVMを呼び出す直前に、変換されたutf8をログファイルに出力しようとしましたが、完全に出力されます。

CP_UTF8(Windows SDK WinN; shで定義)がJNIが期待するものではないかどうか誰かに教えてもらえますか?この問題をデバッグするにはどうすればよいですか。助けていただければ幸いです。

よろしくお願いしますRahul

4

1 に答える 1

0

ドキュメントでは、オプション文字列は「デフォルトのプラットフォーム エンコーディング」でなければならないことが示唆されています。これはおそらく、CP_ACP を使用する必要があることを意味します。文字をそのエンコーディングで表現できない場合、できることはあまりありません。

(代わりにファイルの短い名前を使用できますか?)

于 2011-06-16T13:25:28.703 に答える