这是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
),它没有任何区别。
答案 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
之下。