280

我在MacOS X上升级到最新的Java 7u40 ,并在使用 Eclipse 启动我的应用程序时开始在控制台上收到以下消息。该应用程序运行良好,但我想找出问题的原因并希望能解决它。

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.

有谁知道为什么会打印此消息以及如何修复它?

4

12 回答 12

179

⚠️对于 JetBrains IntelliJ IDEA:转到 Help -> Edit Custom Properties.... 如果它要求您创建文件,请创建它。要禁用错误消息,请将以下内容粘贴到您创建的文件中:

idea_rt
idea.no.launcher=true

这将在 IntelliJ 重新启动时生效。

于 2017-04-22T18:27:37.260 回答
119

截至 2017 年 10 月,此问题现已在

于 2017-04-03T10:32:35.210 回答
21
  1. 从以下位置安装 Java 7u21:http ://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u21-oth-JPR

  2. 设置这些变量:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home
    export PATH=$JAVA_HOME/bin:$PATH
    
  3. 运行您的应用并玩得开心 :)

于 2014-02-11T15:10:48.967 回答
11

将 @Lichtamberg 的评论复制粘贴到 gotoalberto 的答案

也适用于 Java 1.8:

# in ~/.zshrc and ~/.bashrc

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home 
export PATH=$JAVA_HOME/bin:$PATH 

这解决了我在 java 8 上的问题。

于 2016-06-18T11:26:29.513 回答
5

不确定这是否是问题的原因,但我仅在安装JVM Monitor后才遇到此问题。

卸载 JVM Monitor 为我解决了这个问题。

于 2015-02-17T12:40:19.013 回答
4

As other answers detail, this is a bug in the JDK (up to u45) which will be fixed in JDK7u60 - while this is not out yet, you may download the b01 from: https://jdk7.java.net/download.html

It's beta, but fixed that issue for me.

于 2013-12-10T12:28:21.663 回答
3

https://groups.google.com/forum/#!topic/google-appengine-stackoverflow/QZGJg2tlfA4

根据我在网上找到的信息,这是JDK 1.7.0_45 中引入的一个错误。我已经读过它将在 Java 的下一个版本中修复,但它还没有发布。据说,它在 1.7.0_60b01 中已修复,但我找不到在哪里下载它,并且 1.7.0_60b02 重新引入了该错误。

我设法通过恢复到 JDK 1.7.0_25 来解决这个问题。可能不是您想要的解决方案,但这是我能够使其工作的唯一方法。安装 JDK 后不要忘记在 Eclipse 中添加 JDK 1.7.0_25。

请不要直接回复此电子邮件,而是转到 StackOverflow: JavaLaunchHelper 类在两者中都实现了。将使用两者之一。哪个是未定义的

于 2014-02-18T14:22:52.753 回答
1

为了解决这个问题,我降级到JDK 版本 1.7.0_21。然后我使用这个小 bash 脚本来更改我使用的版本。

function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=`/usr/libexec/java_home -v $@`
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }

 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }

在 zshrc/bshrc 文件中拥有 bash 脚本后,只需调用setJdk 1.7.0_21即可。

于 2015-12-10T13:18:40.450 回答
0

2019 年 7 月

OSX Mojave 10.14.5 (18F132) IntelliJ 2019-1 社区版。它可以设置idea.properties 文件。我还配置了指向 /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/ 的 JAVA_HOME

自定义 IntelliJ IDEA 属性

idea_rt idea.no.launcher=true

于 2019-07-05T02:50:34.313 回答
0

好吧,经过一番挣扎,对我有用的是完全删除当前的 JDK,如此处所述

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/LaunchAgents/com.oracle.java.Java-Updater.plist
sudo rm -rf /Library/PrivilegedHelperTools/com.oracle.java.JavaUpdateHelper
sudo rm -rf /Library/LaunchDaemons/com.oracle.java.JavaUpdateHelper.plist
sudo rm -rf /Library/Preferences/com.oracle.java.Helper-Tool.plist

然后安装 1.7.0_21,从这里下载。

现在java -version提示:

java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b12)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
于 2016-07-04T00:31:49.160 回答
-1

如果您使用 IntelliJ 和 Mac,只需转到 Project structure -> SDK 并确保列出了 Java,但它指向 sth like

/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

而不是用户家...

于 2017-06-23T19:09:34.147 回答
-3

jdk-7u80-macosx-x64.dmg 修复了这个问题。

于 2016-05-24T06:15:31.337 回答