5

Java 7にクラスがあり、ネイティブコードからロードする必要があります。私はすでにJNIでjava6を使用しましたが、java6はそのクラスをロードできません。そこで、新しいJDKをインストールし、VCプロジェクトなどのインクルードディレクトリとリンク参照を変更しました。JNIからjre7を起動するまでは、すべて問題ありませんでした。

JNI_CreateJavaVMは、 vm_args.versionパラメーターのjavaバージョンを取りますが、1.6より新しいバージョンの定義はありません。

JavaVMInitArgs vm_args;
...
vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 2;
vm_args.options = options;
vm_args.ignoreUnrecognized = 0;

int ret = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);

FindClassjava7クラスを呼び出すと、明らかにUnsupportedClassVersionErrorが生成されます。

問題: java7 JVMを作成するにはどうすればよいJNI_CreateJavaVMですか?

4

2 に答える 2

2

Mac ユーザーの場合は、次の記事を読むことを強くお勧めします。

OS X 10.8.2 で Java 7 と Java 6 を切り替えるにはどうすればよいですか? https://superuser.com/questions/490425/how-do-i-switch-between-java-7-and-java-6-on-os-x-10-8-2

作成した Java クラスからいくつかの静的メソッドを呼び出す JNI の例を正常にコンパイルして実行しました。次のように「java_home」を呼び出すことで問題を解決しました。

/usr/libexec/java_home -v 1.6.0_45 --exec javac Sample.java

于 2013-06-19T07:18:56.567 に答える
1

問題はパス環境変数にあります。つまり、jre7の前のjre6を参照しています。Visual C ++-> Property Pages-> Debugging-> Environmentで、次のように変更しました:path = C:\ Java \ jre7 \ bin; C:\ Java \ jre7 \ bin \ client;%path%

または直接:[マイコンピュータ]->[プロパティ]->[詳細設定]->[環境変数]

于 2012-09-11T19:18:50.743 に答える