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的错误解决