【问题标题】:Using Oracle Java VM in-process on Mac在 Mac 上使用进程内 Oracle Java VM
【发布时间】:2016-05-13 06:01:06
【问题描述】:

这是this question的后续。

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

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

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


现在我想在进程内使用 Oracle Java VM,但我不能 - 即使设置了 JAVA_HOME,也会不断弹出“您需要 Java 运行时”错误消息。

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

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

编辑:毕竟,java 命令以某种方式做到了。我用调试器四处寻找,它确实在某些时候调用了 JNI_CreateJavaVM。我什至模仿了这些论点(还有一个,-Dsun.java.launcher=SUN_STANDARD),没有任何区别。

【问题讨论】:

    标签: java macos jvm


    【解决方案1】:

    找到答案here

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

    即使 JAVA_HOME 未设置也可以使用。

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

    【讨论】:

      猜你喜欢
      • 2014-03-14
      • 2013-02-13
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多