我在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.
有谁知道为什么打印此消息以及如何解决它?
⚠️ 对于 JetBrains IntelliJ IDEA:转到 Help -> Edit Custom Properties...
。如果文件要求您创建文件,请创建该文件。要禁用错误消息,请将以下内容粘贴到您创建的文件中:
idea_rt
idea.no.launcher=true
这将在重新启动 IntelliJ 时生效。
截至 2017 年 10 月,此问题现已在
- JDK1.9
- JDK1.8.152
- JDK1.7.161
-
从以下位置安装 Java 7u21: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u21-oth-JPR
-
设置以下变量:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH
-
运行您的应用并享受乐趣:)
复制粘贴@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 监视器后才遇到此问题。
卸载JVM监视器为我解决了这个问题。
正如其他答案所详细说明的那样,这是JDK(最高u45)中的一个错误,将在JDK7u60中修复 - 虽然这还没有出来,但您可以从以下位置下载b01: https://jdk7.java.net/download.html
这是测试版,但为我解决了这个问题。
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在两者中都实现了。将使用两者之一。哪一个是未定义的
为了解决这个问题,我降级到 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)
> 七月 2019
OSX 莫哈韦 10.14.5 (18F132)智能 2019-1 社区版。它工作设置想法属性文件。我还配置了指向/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Content/Home/的JAVA_HOME
。自定义智能 IDEA 属性
idea_rtidea.no.launcher=true
如果您使用的是IntelliJ和Mac,只需转到项目结构-> SDK,并确保列出了Java,但它指向类似
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
而不是用户主页...
JDK-7u80-macOSX-x64.dmg 解决此问题。