我遇到了让我的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)
答案 0 :(得分:0)
[…]/jcontrol: line 116: [: too many arguments […]/jcontrol: line 120: [: -Xdock:icon=/Library/Internet: binary operator expected
看起来jcontrol
文件中存在语法错误,这些错误表现自己,因为某些祖先进程设置了环境变量_JCP_DOCK_NAME
和_JCP_DOCK_ICON
。 env | 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
后重新启动应用程序解决了问题。