类JavaLaunchHelper在两个地方实现

今天我在macOS Sierra上升级了我的Intellij Idea,现在,当我在控制台运行应用程序时,我有这个错误:

objc[3648]:类JavaLaunchHelper在/Library/Java/JavaVirtualMachines/jdk1.8.0_121中实现。jdk/Contents/Home/bin/java (0x10d19c4c0)和/Library/ java /JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ libinstrucment .jdk/Contents/Home/jre/lib/ libinstrucment .jdk/Contents/Home/jre/lib/ libinstrucment .jdk (0x10d19c4c0)dylib (0 x10ea194e0)。两者中的一个将被使用。哪一个是没有定义的。

209701 次浏览

你可以在这里找到所有的细节:

  • 运行控制台中的想法- 170117 "objc: Class JavaLaunchHelper is implemented in both…"警告

它是Mac上的Java中的旧bug, IDE在启动应用程序时使用被Java代理触发。此消息是无害的,可以安全忽略。Oracle开发者评论:

此消息是良性的,此问题没有负面影响 由于该类的两个副本是相同的(从精确的 相同的源)。

Java 9java8更新152中的问题已解决

如果它以任何方式打扰你或影响你的应用程序(它不应该),IntelliJ IDEA的解决方案是通过将idea.no.launcher=true添加到idea.properties (Help | Edit Custom Properties...)来禁用idea_rt启动器代理。该解决方案将在下次重新启动IDE时生效。

不过,我不建议禁用IntelliJ IDEA启动代理。它用于诸如优雅关机(退出按钮)、线程转储、解决命令行过长超出操作系统限制的问题等功能。仅仅为了隐藏无害的信息而失去这些功能可能是不值得的,但这取决于您。

这发生在我安装Intellij IDEA 2017时,去菜单首选项->构建,执行,部署->调试器并禁用选项:“强制经典虚拟机用于JDK 1.3。X和更早”。这对我很管用。

我正在使用Intellij Idea 2017,我遇到了同样的问题。对我来说,解决问题的方法很简单

  1. 在intelliJ中关闭项目
  2. File ->从现有资源中新建>项目
  3. 使用从外部模型导入(如果有的话)
  4. 再次打开项目。

同样的错误,我升级我的Junit并解决它

org.junit.jupiter:junit-jupiter-api:5.0.0-M6

org.junit.jupiter:junit-jupiter-api:5.0.0

由于“此消息是无害的”(参见@CrazyCoder的回答), 简单的安全的解决方案是,您可以通过IntelliJ IDEA设置在控制台折叠此嗡嗡声消息:

  1. 【首选项】-【编辑器】-【常规】-【控制台】-【折叠包含】的控制台行
    . 当然,你可以使用【Find Action…(mac上的cmd+shift+A)和输入Fold console lines that contain,以便更有效地导航
  2. 添加Class JavaLaunchHelper is implemented in both

image

在我的电脑上,结果是:(LGTM:b)

image

您可以展开消息再次检查:

image

PS:

截至2017年10月,此问题已在jdk1.9/jdk1.8.152/jdk1.7.161
中解决 有关更多信息,请参见@ mutonup的答案)

我已经找到了另一种解决方法:从项目路径中排除libinstrument.dylib。为此,转到首选项 -> 构建、执行和部署 -> 编译器 -> 不包括 -> +,并在错误消息中按路径添加文件。

这是我几年前遇到的一个问题,我之前在Eclipse中通过从我的项目中排除1.7来解决这个问题,但在我最近安装的IntelliJ中又出现了这个问题。我通过:

  1. 卸载JDK:

    cd /Library/Java/JavaVirtualMachines
    sudo rm -rf jdk1.8.0_45.jdk
    

    (我安装了jdk1.8.0_45.jdk;显然,您应该卸载该文件夹中列出的Java版本。有问题的文件就在那个文件夹里,应该被删除

  2. 下载并安装JDK 9

请注意,下次创建新项目或打开现有项目时,需要将项目SDK设置为指向新的JDK安装。如果您在JavaVirtualMachines文件夹中安装了JDK 1.7(我相信我也遇到过这种情况),您可能仍然会看到这个错误,或者它会爬回来。