【问题标题】:Error initializing Java VM in Mac OS X Lion在 Mac OS X Lion 中初始化 Java VM 时出错
【发布时间】:2012-10-21 09:08:13
【问题描述】:

我在让我的 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)

【问题讨论】:

  • 等等,这些十六进制值是内存地址吗?我以为 JVM从不给出内存地址?
  • 我不知道。这就是控制台的日志..
  • 从终端输入“java -version”会发生什么? (如果安装了 Java 7U9,那么你应该得到以下输出 "java version "1.7.0_09""
  • 检查/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/jcontrol@第116行的文件。

标签: java macos osx-lion


【解决方案1】:
/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 后重新启动应用解决了问题。

【讨论】:

    【解决方案2】:
    […]/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 参数为nullHashtable.put 将引发空指针异常。知道这指的是什么键会很有趣,但是在调试native code 时,Java 调试器可能不会有太大用处。也许您最好的选择是使用“gdb”之类的通用应用程序调试器来尝试找出与 put 调用中的 null 值关联的键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      相关资源
      最近更新 更多