質問

VC ++経由でJNIを使​​用し、ClassPathのカスタムディレクトリをUTF -8 String -djava.class.path = c: mydir my.jarとして渡そうとしています

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

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

私がしていることは1)2)WideChartomultibyteを使用してWSTRINGをCP_UTF8に変換する3)UTF8STRINGをオプションストリングにコピーしてJNI_CREATEJAVAJVMに電話します

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

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

事前にラーフルに感謝します

役に立ちましたか?

解決

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

(代わりにファイルの短い名前を使用できるでしょうか?)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top