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