我在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.

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


当前回答

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

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

其他回答

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

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

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

而不是用户家…

复制粘贴@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-7u80-macosx-x64。DMG修复了这个问题。

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

jdk1.9 jdk1.8.152 jdk1.7.161