Создание java7 JVM с помощью API вызова JNI

У нас есть класс в Java 7, и нам нужно загрузить его из нативного кода. Я уже использовал Java 6 с JNI, но Java 6 не может загрузить этот класс. Поэтому я установил новый JDK, изменил каталоги ссылок и ссылки в моем проекте VC и т. Д. Все было хорошо, пока я не захотел запустить jre7 из JNI:

JNI_CreateJavaVM принимает версию Java в vm_args.version параметр, но нет определения для более новой версии, чем 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);

призвание FindClass для класса Java7, очевидно, производит UnsupportedClassVersionError.

Эта проблема: Как мне создать java7 JVM с JNI_CreateJavaVM?

5

Решение

Для пользователей Mac я настоятельно рекомендую прочитать эту статью:

Как я могу переключиться между Java 7 и Java 6 на OS X 10.8.2?
https://superuser.com/questions/490425/how-do-i-switch-between-java-7-and-java-6-on-os-x-10-8-2

Я успешно скомпилировал и запустил пример JNI, в котором я вызываю некоторые статические методы из созданного мной класса Java. Я решил проблему, вызвав «java_home» следующим образом:

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

2

Другие решения

Проблема в переменной окружения пути, которая относится к jre6 до jre7.
На Visual C ++ -> Property Pages-> Debugging-> Environment я изменил на:
путь = C: \ Java \ jre7 \ Bin; C: \ Java \ jre7 \ Bin \ клиента;% путь%

Или непосредственно на: Мой компьютер-> Свойства-> Дополнительно-> Переменные среды

1

По вопросам рекламы [email protected]