Mac OS X Lion:VM初始化期间发生错误无法加载本机库:libjava.jnilib

时间:2011-07-27 20:11:24

标签: java macos

在BASH中运行“java -version”会产生正确的结果。但是,当我在apache上使用PHP脚本中的shell_exec()命令尝试相同的命令时,我得到:

“VM初始化期间发生错误无法加载本机库:libjava.jnilib”

我已尝试解决此问题的所有常规修补程序(更改符号链接,取消设置env变量)。

我也很确定BASH和脚本都使用相同的二进制文件。 “哪个java”产生相同的结果。

关于如何让“java -version”工作的任何想法?

2 个答案:

答案 0 :(得分:1)

通过将DYLD_LIBRARY_PATH环境变量设置为该shell exec的一部分,您可以向OSX提供有关在何处找到该库的提示。它与使用相同的二进制文件无关,但无论该二进制文件是否能够在用完apache时找到它链接到的库。您可以通过运行以下命令查看二进制文件链接的库:

otool -L <binary>

您将看到libjava.jnilib所在的位置,并将该路径添加到您的DYLD_LIBRARY_PATH。您可能需要许多库来添加路径。

祝你好运!

免责声明:使用DYLD_LIBRARY_PATH有各种各样的阵营,它可能(像许多事情一样)是一种安全风险。但是,由于在这种情况下shell_exec()被用于执行二进制文件而不使用绝对路径,因此DYLD_LIBRARY_PATH是最不安全的问题。

答案 1 :(得分:0)

这对我有用:

<?php
  exec('export DYLD_LIBRARY_PATH=""; java -version');
?>

参考文献:
- https://drupal.org/node/1257654
- Calling java from PHP exec