在Mac OS X Lion中初始化Java VM时出错

时间:2012-10-31 19:09:01

标签: java macos osx-lion

我遇到了让我的Java在Mac OS X Lion上工作的问题。我完成了Java升级,完全删除了它。然后我再次需要它,并且我安装了7v9.apps但是没有用。

然后我做了Apple KB(知识库)文章,将其恢复为6,但这不起作用。我完全卸载了它(现在很多次),然后重新安装7v9,但我无法使用我的应用程序,也无法打开java控制台。

有人可以帮忙吗?以下是来自控制台的日志:

10/31/12 3:01:44.681 PM [0x0-0x6ea6ea].com.apple.systempreferences: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/jcontrol: line 116: [: too many arguments

10/31/12 3:01:44.681 PM [0x0-0x6ea6ea].com.apple.systempreferences: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/jcontrol: line 120: [: -Xdock:icon=/Library/Internet: binary operator expected

10/31/12 3:01:44.723 PM [0x0-0x6ea6ea].com.apple.systempreferences: Error occurred during initialization of VM

10/31/12 3:01:44.723 PM [0x0-0x6ea6ea].com.apple.systempreferences: java.lang.NullPointerException

10/31/12 3:01:44.723 PM [0x0-0x6ea6ea].com.apple.systempreferences:     at java.util.Hashtable.put(Hashtable.java:542)

10/31/12 3:01:44.723 PM [0x0-0x6ea6ea].com.apple.systempreferences:     at java.lang.System.initProperties(Native Method)

10/31/12 3:01:44.723 PM [0x0-0x6ea6ea].com.apple.systempreferences:     at java.lang.System.initializeSystemClass(System.java:1115)

2 个答案:

答案 0 :(得分:0)

[…]/jcontrol: line 116: [: too many arguments
[…]/jcontrol: line 120: [: -Xdock:icon=/Library/Internet: binary operator expected

看起来jcontrol文件中存在语法错误,这些错误表现自己,因为某些祖先进程设置了环境变量_JCP_DOCK_NAME_JCP_DOCK_ICONenv | grep JCP的输出在这里可能很有用。可以通过在上述行中围绕这些变量添加引号来修复jcontrol脚本:

if [ -z "${_JCP_DOCK_NAME}" ]; then
    _JCP_DOCK_NAME=-Xdock:name="Java Control Panel"
fi

if [ -z "${_JCP_DOCK_ICON}" ]; then
    _JCP_DOCK_ICON=-Xdock:icon="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Resources/Java7VM.icns"
fi

我很不确定这是否是后续错误消息的原因。

Error occurred during initialization of VM
java.lang.NullPointerException
    at java.util.Hashtable.put(Hashtable.java:542)
    at java.lang.System.initProperties(Native Method)
    at java.lang.System.initializeSystemClass(System.java:1115)
如果value参数为null

Hashtable.put会抛出空指针异常。知道这是指什么密钥会很有趣,但调试这个native code时,Java调试器可能没什么用处。也许最好的办法是使用像“gdb”这样的通用应用程序调试器,试图找出与null调用中的put值相关联的密钥。

答案 1 :(得分:0)

/Library/Internet: binary operator expected

尝试在OS X上使用 Oracle JDeveloper时出现类似错误。

我认为问题是$JAVA_HOME环境变量中的空间。我只是创建了一个符合Oracle Java 1.7位置的符号链接:

>ls -la /usr/local/oraclejava
lrwxr-xr-x  1 root  admin  64 20 Sep 13:33 /usr/local/oraclejava -> /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

$JAVA_HOME设置为/usr/local/oraclejava后重新启动应用程序解决了问题。