ChatGPT解决这个技术问题 Extra ChatGPT

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/ 中实现内容/Home/jre/lib/libinstrument.dylib (0x10ea194e0)。将使用两者之一。哪一个是未定义的。


C
CrazyCoder

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

IDEA-170117 “objc: Class JavaLaunchHelper is implemented in both ...” 运行控制台中的警告

IDE 在启动应用程序时使用的是 Mac 上的 old bug in Java。此消息是无害的,可以安全地忽略。 Oracle 开发者评论:

该消息是良性的,这个问题没有负面影响,因为该类的两个副本是相同的(从完全相同的源编译)。这纯粹是一个外观问题。

Java 9Java 8 update 152 中的 problem is fixed

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

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


idea_rt 是做什么的?有什么理由不禁用它?
它提供了优雅的退出、线程转储、处理可能超过操作系统限制的长类路径等。我不会禁用它,尤其是为了隐藏无害的消息。
我安装了 Java 8 update 152,它解决了答案中的问题。谢谢你。
什么时候通过oracle java se推送152?
安装 IntelliJ CE 2018.2,运行 Java 8 更新 191:消息仍然存在。
o
oldratlee

由于“此消息是无害的”(参见 the @CrazyCoder's answer),一个简单安全的解决方法是您可以通过 IntelliJ IDEA 设置在控制台中折叠此蜂鸣消息:

【偏好设置】-【编辑器】-【通用】-【控制台】-【折叠控制台行包含】当然可以使用【查找动作...】(mac上cmd+shift+A),输入折叠控制台行包含以便更有效地导航。添加类 JavaLaunchHelper 在两者中都实现

https://user-images.githubusercontent.com/1063891/30635988-b4003068-9e26-11e7-926f-aeca7fc09297.png

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

https://user-images.githubusercontent.com/1063891/30636211-68da8a9c-9e27-11e7-9a7e-ae5c3b6af4c2.png

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

https://user-images.githubusercontent.com/1063891/30636264-84d9e74c-9e27-11e7-8a8e-9c2b78a996ed.png

PS:

截至 2017 年 10 月,此问题现已在 jdk1.9/jdk1.8.152/jdk1.7.161 中得到解决,有关更多信息,请参阅@muttonUp 的回答)


B
BozoJoe

我正在使用 Intellij Idea 2017 并且遇到了同样的问题。对我来说解决问题的是简单地

在 intelliJ File -> New -> project from existing resources 中关闭项目使用 Import from external model(如果有)再次打开项目。


经典的 close then open 解决方案 =))
我在这里尝试了作为答案提供的所有解决方案,但只有这个解决方案对我有用。我建议在重新导入之前删除 .idea 文件夹。
这对我在运行 Java 8 更新 151 的 macOS Sierra 上的 IDEA 2017.3.1 中不起作用。但是在重新启动 IDEA 并将我的项目设置为使用更新 152 后升级到 152 修复了它。
D
Danny Guo

这发生在我安装 Intellij IDEA 2017 时,转到菜单首选项 -> 构建、执行、部署 -> 调试器并禁用选项:“强制适用于 JDK 1.3.x 及更早版本的经典 VM”。这对我有用。


您可能还需要像 CrazyCoder 提到的那样禁用 idea_rt 启动器代理。将idea.no.launcher=true 添加到idea.properties (帮助| 编辑自定义属性...)。确保在此之后重新启动 IDE。
是的,自定义属性解决方法确实有效,您的建议对我的系统没有任何作用。您是否尝试过您的答案,即切换设置 - 我看不出 JDK 1.3.x 之前的选项有什么影响?我在 Java 8 上。
对我来说,我一开始就尝试了自定义属性,它对我不起作用。然后我发现了这个禁用 JDK1.3.x 的解决方案。重启IDE后,一切正常。
@DannyGuo,因为问题是由任何 Java 代理引起的,并且在调试模式下,Java 代理无论如何都用于现代 JVM,这仅在调试模式下为您解决了问题,但是当启动器代理处于运行模式时,您将遇到问题启用。
g
gasabr

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


D
Derlin

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

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

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

D
Derlin

几年前这对我来说是个问题,我之前在 Eclipse 中通过从我的项目中排除 1.7 来修复它,但它再次成为我最近安装的 IntelliJ 的问题。我通过以下方式修复了它:

卸载 JDK: cd /Library/Java/JavaVirtualMachines sudo rm -rf jdk1.8.0_45.jdk (我安装了 jdk1.8.0_45.jdk;显然你应该卸载该文件夹中列出的任何 java 版本。有问题的文件位于在该文件夹中,应将其删除。)下载并安装 JDK 9。

请注意,下次创建新项目或打开现有项目时,您需要将项目 SDK 设置为指向新的 JDK 安装。如果您在 JavaVirtualMachines 文件夹中安装了 JDK 1.7(我相信这就是发生在我身上的事情),您也可能仍然会看到这个错误或让它重新出现。