在Mac上使用Oracle Java VM进程

时间:2016-02-03 20:38:51

标签: java macos jvm

这是this question的后续内容。

MacOS X在java下有/usr/bin命令。如果从Oracle安装JRE,它就不起作用 - 声称没有Java运行时,并提供下载和安装Apple的运行时。但是,如果你第一次运行

export JAVA_HOME=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

然后java按预期工作。这就是Oracle JRE自行安装的地方。

现在我想在进程中使用Oracle Java VM,我不能 - 你需要Java运行时"即使设置了JAVA_HOME,错误信息也会不断弹出。

链接JavaVM框架会导致应用启动时出现消息,甚至在main()之前。

尝试动态加载/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/server/libjvm.dylib并调用JNI_CreateJavaVM会在方法调用期间导致相同的消息。

编辑:java命令以某种方式完成它。我已经调试了一个调试器,它确实在某个时候调用了JNI_CreateJavaVM。我甚至模仿了这些论点(还有一个额外的,-Dsun.java.launcher=SUN_STANDARD),它没有任何区别。

1 个答案:

答案 0 :(得分:0)

找到答案here

不需要加载libjvm.dylib,而是需要加载/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib。它也导出JNI_CreateJavaVM。打电话给那个,它会按预期工作。

即使没有设置JAVA_HOME也能正常工作。

未来警告:Oracle表示自Java 1.9以来,将不再支持浏览器插件技术。考虑到这一点,Oracle JRE在1.9版中的主页可能不再位于Internet Plug-Ins之下。