在 Mac 上使用 Oracle Java 进程内虚拟机
Using Oracle Java VM in-process on Mac
这是 的跟进。
MacOS X 在 /usr/bin
下有 java
命令。如果从 Oracle 安装 JRE,它不起作用 - 声称没有 Java 运行time,并提供下载和安装 Apple 的 运行time。但是如果你先 运行
export JAVA_HOME=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
然后 java
按预期工作。这就是 Oracle JRE 安装自身的地方。
现在我想在进程中使用 Oracle Java VM,但我不能 - "You need Java runtime" 错误消息不断弹出,即使 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
),它没有任何区别。
找到答案here。
需要加载 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib
,而不是加载 libjvm.dylib。它也导出 JNI_CreateJavaVM
。调用那个,它会按预期工作。
即使 JAVA_HOME
未设置也能正常工作。
未来警告:Oracle 表示自 Java1.9 起,将不再支持浏览器插件技术。考虑到这一点,1.9 版中的 Oracle JRE 主页可能不再位于 Internet Plug-Ins
之下。
这是
MacOS X 在 /usr/bin
下有 java
命令。如果从 Oracle 安装 JRE,它不起作用 - 声称没有 Java 运行time,并提供下载和安装 Apple 的 运行time。但是如果你先 运行
export JAVA_HOME=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
然后 java
按预期工作。这就是 Oracle JRE 安装自身的地方。
现在我想在进程中使用 Oracle Java VM,但我不能 - "You need Java runtime" 错误消息不断弹出,即使 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
),它没有任何区别。
找到答案here。
需要加载 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/jli/libjli.dylib
,而不是加载 libjvm.dylib。它也导出 JNI_CreateJavaVM
。调用那个,它会按预期工作。
即使 JAVA_HOME
未设置也能正常工作。
未来警告:Oracle 表示自 Java1.9 起,将不再支持浏览器插件技术。考虑到这一点,1.9 版中的 Oracle JRE 主页可能不再位于 Internet Plug-Ins
之下。