类 JavaLaunchHelper 在两个位置实现

2022-08-31 05:06:51

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

objc[3648]: Class 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/libinstrument.dylib (0x10ea194e0) 中实现。将使用两者之一。哪一个是未定义的。


答案 1

您可以在此处找到所有详细信息:

  • IDEA-170117“objc: Class JavaLaunchHelper 在两者中都实现了...”运行控制台中的警告

这是Mac上Java中的旧错误,由IDE在启动应用程序时使用的Java代理触发。此消息是无害的,可以安全地忽略。甲骨文开发者评论:

该消息是良性的,此问题不会产生负面影响,因为该类的两个副本是相同的(从完全相同的源编译)。这纯粹是一个表面问题。

此问题在 Java 9Java 8 更新 152已修复

如果它惹恼了您或以任何方式影响了您的应用程序(它不应该),IntelliJ IDEA的解决方法是通过添加到( | )来禁用启动器代理。变通办法将在下次重新启动 IDE 时生效。idea_rtidea.no.launcher=trueidea.propertiesHelpEdit Custom Properties...

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


答案 2

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

  1. 【首选项】- 【编辑器】-【通用】-【控制台】- 【折叠控制台行包含】
    当然,您可以使用【查找操作...】(在mac上)和键入,以便更有效地导航。cmd+shift+AFold console lines that contain
  2. Class JavaLaunchHelper is implemented in both

image

在我的电脑上,原来是:(LGTM :b)

image

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

image

附言:

自 2017 年 10 月起,此问题现已在 jdk1.9/jdk1.8.152/jdk1.7.161
中得到解决,有关详细信息,请参阅@muttonUp的答案)