我们在java 7中有一个类,需要从本机代码中加载它。我已经在JNI中使用了java 6,但是java 6不能加载该类。因此,我安装了新的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);为FindClass类调用java7显然会产生一个UnsupportedClassVersionError。
问题:如何使用JNI_CreateJavaVM创建java7 JVM
发布于 2012-09-11 19:18:50
问题在于path环境变量,即jre6之前的jre7。在visual ++->属性页->调试->环境中,我更改为: path=C:\Java\jre7\bin;C:\Java\jre7\bin\client;%path%
或者直接打开:我的计算机->属性->高级->环境变量
发布于 2013-06-19 07:18:56
对于Mac用户,我强烈建议阅读本文:
如何在OSX10.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
我成功地编译并运行了JNI示例,其中调用了我创建的Java类中的一些静态方法。我通过这样调用"java_home“来解决这个问题:
/usr/libexec/java_home -v 1.6.0_45 -exec javac Sample.java
https://stackoverflow.com/questions/12374765
复制相似问题