返回

MacOS X Java 升级后如何解决 `Class JavaLaunchHelper is implemented in both` 错误?

java

JavaLaunchHelper 类冲突:MacOS X Java 升级后的疑难解答

问题:

在 MacOS X 上将 Java 升级到 7u40 后,启动应用程序时,控制台可能会出现以下错误消息:

objc[10012]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.

原因:

此错误表明 JavaLaunchHelper 类在两个不同的库中同时实现:/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/java/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib/libinstrument.dylib。系统在检测到同一类的多个实现时会发出此消息。

解决办法:

明确指定要使用的库是一种解决办法。为此,可以在 /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/java 中添加以下标志:

-Djava.library.path=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib

步骤:

  1. 打开终端。
  2. 导航到 /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin 目录。
  3. 使用文本编辑器打开 java 文件。
  4. 在文件开头添加标志:
-Djava.library.path=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib
  1. 保存并关闭文件。
  2. 重新启动应用程序。

其他注意事项:

  • 使用正确的 Java 版本和路径。
  • 如果问题仍然存在,请重新安装 Java。
  • 尝试将 Eclipse 更新到最新版本。

结论:

通过遵循这些步骤,可以解决 Class JavaLaunchHelper is implemented in both 错误消息,并在 MacOS X 上顺利运行应用程序。

常见问题解答:

  1. 为什么会出现这个错误?
    • 因为 JavaLaunchHelper 类在两个不同的库中同时实现。
  2. 如何解决这个问题?
    • 添加标志 -Djava.library.path=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/jre/lib/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/bin/java 文件中。
  3. 为什么需要重新安装 Java?
    • 如果其他步骤不起作用,重新安装 Java 可以修复潜在的问题。
  4. 如何更新 Eclipse?
    • 打开 Eclipse,转到 "Help" 菜单,然后单击 "Check for Updates"。
  5. 我可以忽略这个错误吗?
    • 可以,但可能会导致应用程序不稳定或崩溃。