问题描述
我已经安装了JDK8,并将我的JAVA_HOME设置为正确的路径.我可以毫无问题地使用Java.但是,当我尝试从C ++运行Java代码时,它提示我安装一个真正旧的JRE6版本.
I have JDK8 installed and my JAVA_HOME is set to the correct path for that. I can use Java without any problems. However, when I try to run Java code from C++, it prompts me to install a really old version of JRE6.
在我的代码中,我有:
JavaVMInitArgs vm_args;
vm_args.version = JNI_VERSION_1_8;
所以请求JRE6很奇怪.如何获得C ++ JNI来使用现有的JDK8安装?
so it is weird that JRE6 is being requested. How can I get C++ JNI to use my existing JDK8 installation?
推荐答案
由于某种原因,当代码使用libjvm.dylib
时,会发生这种情况.还有libjli.dylib
,它具有相同的功能,但会跳过JRE 6对话框.我从来没有想过要检查为什么会这样.
For some reason this happens when code uses libjvm.dylib
. There's also libjli.dylib
which has the same functions but skips the JRE 6 dialog. I've never bothered to check why it is that way.
如果与-ljvm
链接,请将其替换为-ljli
.如果将dlopen
和dlsym
一起使用,只需在其中使用其他库名即可.
If you link with -ljvm
, replace this with -ljli
. If you use dlopen
together with dlsym
just use the other library name there.
这篇关于C ++ JNI要安装Mac Legacy JRE6的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!