类JavaLaunchHelper在两个…libinstrument.dylib。两者中的一个将被使用。哪个是未定义的

我在MacOS X上升级到最新的Java 7 u40,并在使用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.

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

126771 次浏览

作为其他答案的细节,这是JDK中的一个错误(直到u45),将在JDK7u60中修复-虽然这还没有出来,你可以从:https://jdk7.java.net/download.html下载b01

这是测试版,但为我解决了这个问题。

  1. 安装Java 7u21 from: 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. Run your app and have fun :)

< a href = " https://groups.google.com/forum/ !topic/google-appengine-stackoverflow/QZGJg2tlfA4" rel="nofollow noreferrer">https://groups.google.com/forum/#!主题/ 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类在两者中都实现了。两者中的一个将被使用。哪个是未定义的 < / p >

不确定这是否是问题的原因,但我在安装JVM监控后才得到这个问题。

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

为了解决这个问题,我降级为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,你就可以开始了。

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

复制粘贴@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上的问题。

好吧,经过一番挣扎,对我来说有效的是完全删除当前的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)

截至2017年10月,此问题现在是解决 in

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

idea_rt
idea.no.launcher=true

这将在IntelliJ重启时生效。

如果您正在使用IntelliJ &Mac只需进入项目结构-> SDK,并确保列出了Java,但它指向类似的东西

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

而不是用户家…

2019年7月

OSX Mojave 10.14.5 (18F132) IntelliJ 2019-1社区版。设定想法很管用。属性文件。我还配置了JAVA_HOME指向/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/

自定义IntelliJ IDEA属性

< p > idea_rt idea.no.launcher = true < / p >