jvmのロードに失敗した理由を説明するエラーメッセージを取得したいとします。ここで提供される例から:私はvm_argsで無効な引数を提供していると私はに乗るものを見ることを期待する私の特定のケースでJNI経由でJVMをロードできないときにエラーメッセージを受け取るにはどうすればよいですか?
/* Create the Java VM */
res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
if (res < 0) {
// retrieve verbose error here?
fprintf(stderr, "Can't create Java VM\n");
exit(1);
}
:
http://java.sun.com/docs/books/jni/html/invoke.html
私はこの例を抽出しましたコマンドライン: "認識できないオプション:-foo = bar"さらにテストすると、jvmが標準出力または標準エラー出力にしたいメッセージを表示しているようです。私は、私が探しているエラーを得るためにstdoutとstderrをキャプチャする必要があると信じています(もちろん単純な方法はありません)。私はC++でコーディングしているので、もし誰かがエラーをキャプチャして理想的な文字列にすることができたら、
おかげで、 ランディ
sun.java.comへのリンクは機能しなくなり、 'setError()'関数はスニペットで宣言されていません。それを見つけるためのヒント? – mgd
[old-faq](http://192.9.162.55/products/jdk/faq/jnifaq-old.html)という長い時間が経ちましたが、これは同じリンクに見えます。 setErrorメソッドは私たちが定義したちょうどヘルパーメソッドでした。 jniErrors文字列には、その時点のエラーメッセージが含まれます。 – randy909
ポインタありがとう。回答のリンクを更新する必要がありますか? – mgd