JavaLaunchHelper类在…libinstrument.dylib中都实现。将使用两者之一。哪一个未定义


274

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

有谁知道为什么打印此消息以及如何解决它?


3
尽管这可能是解决此特定类型问题的可行选择-但是这可能使您容易受到u45及更高版本中修复的安全漏洞的攻击。
Matthias Wenz 2014年

5
jdk1.8.0_05也发生了同样的事情
neu242

28
一年过去了,这个错误仍然困扰着每一个碰巧使用Mac的Java开发人员(在OS X 10.9.3上用jdk1.7.0_67验证)。可耻。任何人只要有合适的登录能否请重新打开这些bug bugs.java.com/bugdatabase/view_bug.do?bug_id=8021205bugs.openjdk.java.net/browse/JDK-8025876
托比亚

8
jdk1.8.0_25的错误仍然存​​在。这仅仅是a消息还是实际问题?
Churk 2014年

7
一个这个问题的bug报告提出了一种修正可能会包含在JDK9释放。相同的错误报告说:“对于那些不断问这个问题的人:消息是良性的,此问题不会带来负面影响,因为该类的两个副本都是相同的(从完全相同的来源编译)。这纯粹是一个装饰性的问题。”
约旦

Answers:


176

Jet️ 对于JetBrains IntelliJ IDEA:转到 Help -> Edit Custom Properties...。如果要求您创建文件,请创建该文件。要禁用错误消息,请将以下内容粘贴到您创建的文件中:

idea_rt
idea.no.launcher=true

这将在IntelliJ重新启动时生效。

我在运行macOS 10.14.6(Mojave)的Eclipse IDE版本:Photon Release(4.8.0)Build ID:20180619-1200 我增加了行idea.no.launcher=true<install location>/eclipse/configuration/config.ini这已经解决了这个问题对我来说。


9
不做任何其他事情为我工作。这应该标记为正确。
trishulpani

7
为我工作在IDEA 2017年1月3日OSX 10.12.5 JRE 1.8
丹尼尔·鲁奇

2
OP使用的是Eclipse,而不是IntelliJ。因此,您向他们提供了有关在错误的编辑器中修改设置的说明(因此未将其标记为正确的)。
艾莉森

2
我同意@Allison -如果此答案包括Eclipse的一种方法,那将是非常好的。但是,回答错误的IDE呢?
Daniel Soutar '18

1
适用于IntelliJ 2018.3.3 CE,SDKMAN 5.7.3 + 337和OpenJDK版本“ 1.8.0_131”(Zulu 8.21.0.1-macosx)。
大卫·卢卡奇


20
  1. 从以下位置安装Java 7u21:http : //www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u21-oth-JPR

  2. 设置以下变量:

    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home
    export PATH=$JAVA_HOME/bin:$PATH
    
  3. 运行您的应用程序,玩得开心:)


3
也适用于1.8.0_92:#在.zshrc或.bashrc中导出JAVA_HOME = / Library / Java / JavaVirtualMachines / jdk1.8.0_92.jdk / Contents / Home导出PATH = $ JAVA_HOME / bin:$ PATH
BvuRVKyUVlViVIc7 2016年

@Lichtamberg谢谢,这解决了我在Java 8 mac osx上的问题。我已将您的评论添加为答案,因为几乎所有其他答案都可以使用,但现在已经是绝对的。
Pritesh Jain

1
@gotoalberto当JavaLaunchHelper的两个实现都位于主目录中时,此环境变量将如何解决该问题?
Prashant

1
@Lichtamberg我正在使用声纳运行程序来评估我的应用程序的代码覆盖率。我上面提到的版本仍然遇到同样的问题。尽管我在Mac OS中尝试了很多8版本及其补丁程序。没运气。
Sathish

不要这样做。Java 7u21(在2013年发布,因此错过了四年的大小补丁)具有任意代码执行漏洞:gist.github.com/frohoff/24af7913611f8406eaf3
mseebach

11

复制粘贴@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上的问题。


4
在编辑〜/ .zshrc和〜/ .bashrc之后,仍在Android Studio(2.2p3)中遇到问题
Mic Fok

对于intellij不起作用,在创建/编辑这些文件之后还有下一步吗?
xpto

5

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

卸载JVM Monitor为我解决了这个问题。


同样在这里,JVM Monitor for Eclipse导致了该消息(JBoss 7.1,JDK 1.8.0.X)。
psychowood

当我在eclipse中安装eclEmma插件时,它对我来说就开始了
-Nooblhu

这里同样的问题。卸载了JVM监视器,该监视器不再显示
Zhiya

4

作为其他答案的详细信息,这是JDK中的一个错误(最多u45),该错误将在JDK7u60中修复-尽管尚未发布,您可以从以下网址下载b01:https://jdk7.java.net/download 。 html

它是beta版,但为我解决了该问题。


11
我安装了u60,但仍在/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home/bin/java和/Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/中实现了类JavaLaunchHelper主页/jre/lib/libinstrument.dylib。将使用两者之一。哪一个未定义。
Rich Sadowsky

好像它是在b01和b02之间重新引入的
npskirk 2013年

2
任何有关错误的参考?网址?
binarytemple_picsolve 2014年

3
它实际上还没有修复。他们支持U60的修复出来
Zanson

2

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类。将使用两者之一。哪一个未定义


1

为了解决此问题,我降级到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,一切顺利。


0

好吧,经过一番挣扎之后,对我有用的是完全删除当前的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)

0

2019年七月

OSX Mojave 10.14.5(18F132)IntelliJ 2019-1社区版。它设置了idea.properties文件。我还配置了指向/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/的JAVA_HOME

自定义IntelliJ IDEA属性

idea_rt idea.no.launcher = true


-2

如果您使用的是IntelliJ和Mac,请转到项目结构-> SDK,并确保列出了Java,但它指向

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

而不是用户家...


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.