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. 

Anynone知道为什么这个消息正在被打印,以及如何解决这个问题。

🎯前往<( Help | Edit Custom Properties... )创build该文件,如果它要求您创build该文件,则禁用错误消息将以下内容粘贴到您创build的文件中:

 idea_rt idea.no.launcher=true 

这将在下次重新启动Intellij IDEA时生效。

希望它可以帮助你! 😄

最初认为是固定的问题在后来的版本中被倒退了。

截至2017年10月,这个问题现已解决

  • jdk1.9
  • jdk1.8.152
  • jdk1.7.161
  1. 从这里安装Java 7u21: http : //www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u21-oth-JPR

  2. 设置这些variables:

     export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH 
  3. 运行你的应用程序和乐趣:)

复制粘贴@ 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。

不知道这是否是问题的原因,但是只有在安装JVM Monitor之后才会出现此问题。

卸载JVM Monitor解决了我的问题。

至于其他答案的详细信息,这是JDK(最高U45)中的一个错误,将在JDK7u60中修复 – 虽然尚未完成,但您可以从这里下载b01:

https://jdk7.java.net/download.html

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

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

从我在网上find的,这是JDK 1.7.0_45中引入的一个错误。 我已经读过它将在Java的下一个版本中得到修复,但还没有完成。 据说,它是固定在1.7.0_60b01,但我找不到在哪里下载,1.7.0_60b02重新介绍了错误。

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

请不要直接回复这封电子邮件,而是去StackOverflow: 类JavaLaunchHelper在两个实现。 其中一个将被使用。 哪一个是未定义的

为了解决这个问题,我降级到了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,如下所述 :

 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) 

如果你使用的是IntelliJ&Mac,只需进入Project结构 – > SDK,并确保有列出的Java,但它指向像

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

而不是用户家…

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