JavaLaunchHelper 类在... libinstrument.dylib 中都实现了。将使用两者之一。哪个是未定义的
Posted
技术标签:
【中文标题】JavaLaunchHelper 类在... libinstrument.dylib 中都实现了。将使用两者之一。哪个是未定义的【英文标题】:Class JavaLaunchHelper is implemented in both ... libinstrument.dylib. One of the two will be used. Which one is undefined 【发布时间】:2013-09-18 15:05:30 【问题描述】:我在 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.
有谁知道为什么会打印此消息以及如何修复它?
【问题讨论】:
虽然这可能是解决此类特定问题的可行选项 - 这可能会使您容易受到 u45 及更高版本中修复的安全漏洞的影响。 同样的事情发生在 jdk1.8.0_05 一年过去了,这个错误仍然困扰着每个碰巧使用 Mac 的 Java 开发人员(在 OS X 10.9.3 上使用 jdk1.7.0_67 验证)。可耻。任何具有适当登录名的人都可以重新打开这些错误bugs.java.com/bugdatabase/view_bug.do?bug_id=8021205 和bugs.openjdk.java.net/browse/JDK-8025876 jdk1.8.0_25 的Bug 仍然存在。这只是一个烦人的信息还是一个实际的问题? bug report of this issue 建议在 JDK9 版本中可能包含一个修复程序。同一份错误报告说:“对于那些一直问这个问题的人:消息是良性的,这个问题没有负面影响,因为该类的两个副本是相同的(从完全相同的源编译)。这纯粹是一个化妆品问题。” 【参考方案1】:⚠️ 对于 JetBrains IntelliJ IDEA:转到 Help -> Edit Custom Properties...
。如果它要求您创建文件,请创建它。要禁用错误消息,请将以下内容粘贴到您创建的文件中:
idea_rt
idea.no.launcher=true
这将在 IntelliJ 重启时生效。
【讨论】:
OP 使用的是 Eclipse,而不是 IntelliJ。因此,您向他们提供了在错误编辑器中修改设置的说明(因此未将其标记为正确)。 我同意@Allison - 如果这个答案包括 Eclipse 的一种方法,那就太好了。但是回答错误的IDE?【参考方案2】:截至 2017 年 10 月,此问题现已在
中解决 jdk1.9 jdk1.8.152 jdk1.7.161【讨论】:
我刚刚安装了java版本“1.8.0_144”,我遇到了这个问题。 @Reihan_amn 你会的,直到构建 152 我遇到了 jdk1.8.65 的问题,但 jdk1.8.152 解决了这个问题。谢谢【参考方案3】:从以下位置安装 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
运行您的应用,玩得开心:)
【讨论】:
也适用于 1.8.0_92:# in .zshrc 或 .bashrc export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home export PATH=$JAVA_HOME/bin: $PATH @Lichtamberg 感谢这解决了我在 Java 8 mac osx 上的问题。我已将您的评论添加为答案,因为几乎所有其他答案都有效,但现在是绝对的。 @gotoalberto 当 JavaLaunchHelper 的实现都驻留在主目录中时,此环境变量将如何解决问题? @Lichtamberg 我正在使用声纳运行器开始评估我的应用程序的代码覆盖率。对于您上面提到的版本,我仍然遇到同样的问题。虽然我已经在我的 mac os 中尝试了许多带有补丁的 8 版本。没有运气。 不要这样做。 Java 7u21(除了 2013 年发布,因此错过了四年大大小小的补丁)有一个任意代码执行漏洞:gist.github.com/frohoff/24af7913611f8406eaf3【参考方案4】:将 @Lichtamberg 的 cmets 复制粘贴到 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 上的问题。
【讨论】:
在 android Studio (2.2p3) 中编辑 ~/.zshrc 和 ~/.bashrc 后仍然遇到问题 对 intellij 不起作用,创建/编辑这些文件后是否有下一步?【参考方案5】:不确定这是否是问题的原因,但我是在安装 JVM Monitor 后才遇到此问题的。
卸载 JVM Monitor 为我解决了这个问题。
【讨论】:
同样,Eclipse 的 JVM Monitor 导致了该消息(JBoss 7.1,JDK 1.8.0.X)。 当我在 eclipse 中安装 eclEmma 插件时它开始了 这里有同样的问题。卸载 JVM 监视器,这不再显示【参考方案6】:作为其他答案的详细信息,这是 JDK(最高 u45)中的一个错误,将在 JDK7u60 中修复 - 虽然这还没有,您可以从以下位置下载 b01:https://jdk7.java.net/download.html
这是测试版,但为我解决了这个问题。
【讨论】:
我安装了 u60 但仍然得到 Class JavaLaunchHelper 在 /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/bin/java 和 /Library/Java/JavaVirtualMachines/jdk1 中实现.7.0_60.jdk/Contents/Home/jre/lib/libinstrument.dylib。将使用两者之一。哪一个是未定义的。 好像是在 b01 和 b02 之间重新引入的 有没有提到这个错误?网址? 它实际上还没有修复。他们支持 u60 的修复【参考方案7】:https://groups.google.com/forum/#!topic/google-appengine-***/QZGJg2tlfA4
根据我在网上找到的信息,这是 JDK 1.7.0_45 中引入的一个错误。我已经读过它将在 Java 的下一个版本中修复,但它还没有发布。据说1.7.0_60b01已经修复了,但是我找不到下载地址,1.7.0_60b02又重新引入了这个bug。
我设法通过恢复到 JDK 1.7.0_25 解决了这个问题。可能不是您想要的解决方案,但这是我能够使其工作的唯一方法。安装JDK后不要忘记在Eclipse中添加JDK 1.7.0_25。
请不要直接回复此电子邮件,而是转到 ***: Class JavaLaunchHelper is implemented in both. One of the two will be used. Which one is undefined
【讨论】:
【参考方案8】:为了解决这个问题,我降级为JDK version 1.7.0_21。然后我使用this little 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
即可。
【讨论】:
【参考方案9】:好吧,经过一番挣扎,对我有用的是完全删除当前的 JDK,如described here:
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,从here下载。
现在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)
【讨论】:
【参考方案10】:2019 年 7 月
OSX Mojave 10.14.5 (18F132) IntelliJ 2019-1 社区版。它可以设置idea.properties 文件。我还配置 JAVA_HOME 指向 /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/
自定义 IntelliJ IDEA 属性
idea_rt idea.no.launcher=true
【讨论】:
【参考方案11】:如果您使用 IntelliJ 和 Mac,只需转到项目结构 -> SDK 并确保列出了 Java,但它指向类似
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home
而不是用户主页...
【讨论】:
【参考方案12】:jdk-7u80-macosx-x64.dmg 修复此问题。
【讨论】:
以上是关于JavaLaunchHelper 类在... libinstrument.dylib 中都实现了。将使用两者之一。哪个是未定义的的主要内容,如果未能解决你的问题,请参考以下文章
Class JavaLaunchHelper is implemented in two places
两者都实现了 JavaLaunchHelper 类。将使用两者之一。哪一个是未定义的[重复]
jdk 1.8.0_131 Class JavaLaunchHelper is implemented
objc[8715]: Class JavaLaunchHelper is implemented in both....
mac android studio 编译时报Class JavaLaunchHelper is implemented in both
IntelliJ IDEA提示:Class JavaLaunchHelper is implemented in both的错误解决