在使用Java 11进行调试期间,如何避免出现“仅由于引导程序类路径已附加而仅支持引导加载程序类共享”的警告?

时间:2019-01-15 19:18:25

标签: java intellij-idea classloader java-11

最近我切换到Java 11并开始调试我的应用程序并看到以下消息:

  

OpenJDK 64位服务器VM警告:仅支持引导共享   加载程序类,因为已附加了引导程序类路径

仅发现了this committicket,但是告诉我的并不多。

我需要担心吗?

11 个答案:

答案 0 :(得分:6)

在尝试将调试器与Intellij Idea结合使用时,在安装Java12之后遇到了这个问题。我找到的解决方案是进入“设置”并搜索“异步”,然后取消选中“检测代理”框。

答案 1 :(得分:4)

在尝试将调试器与Intellij Idea结合使用时,在安装jdk-12.0.1_windows-x64_bin.zip之后,我也遇到了这个问题,我得到了( Java HotSpot(TM)64位服务器VM警告:引导加载程序类仅支持共享,因为已附加了引导程序类路径)。我也找到了,进入设置并搜索异步,然后取消选中Instrumenting agent框。为我工作正常! ASYNC settings

答案 2 :(得分:1)

您可以忽略此警告。这只是意味着对于未由引导类加载器加载的类,将禁用类数据共享。

来自Improve Launch Times […] With Application Class-Data Sharing

  

JVM使用引导类加载器加载一些JDK类   其余的使用系统类加载器,但所有这些都包含在   其默认存档。当IntelliJ执行您的项目时,它会告诉   JVM通过附加到引导类加载器来加载一些代码   该类路径(消息的第二部分)。现在,这意味着   包含系统加载的类的档案的一部分   类加载器可能无效,因此JVM部分   停用共享(消息的第一部分)。

您可以完全禁用与-Xshare:off的类数据共享,但是会损失一些性能。

答案 3 :(得分:0)

对我而言,仅当我在Docker中运行时以及当我使用Java命令行代理(如DataDog APM代理(-javaagent:/dd-java-agent.jar)时,才出现此问题。 当我在没有代理的情况下在JDK11运行时环境中运行时,我没有收到警告。

答案 4 :(得分:0)

Java版本必须为9或更高版本。

enter image description here

答案 5 :(得分:0)

对于Intellij IDE->“设置/首选项”对话框(Ctrl + Alt + S),转到“构建” |“设置”。执行|部署|调试器异步->取消检查检测代理

答案 6 :(得分:0)

今天,我发现了与您相同的问题。 情况:设置无断点时进行调试 解决方案:单击调试按钮之前,请至少设置一个断点!

答案 7 :(得分:0)

如果不是很重要,您可以更改您的 jdk 版本。我已经从 jdk14 改为 jdk 11。希望它对你有用。

答案 8 :(得分:0)

enter image description hereOperation guide

1.打开偏好选项;

2.找到构建、执行、部署选项;

3.进入Debugger --> Async Stack Traces ;

4.取消勾选检测代理(需要调试器重启)


请参阅此for detailed information

答案 9 :(得分:0)

遇到了同样的问题,并尝试按照上面写的方法解决它。

但是后来我在不更改设置的情况下得到了另一个问题的解决方案。

在您放置断点并要调试的文件上按鼠标右键。然后选择“调试你的文件名.method()”。

不要使用工具窗口中的调试按钮。问题似乎是 Idea 无法理解您要调试哪个文件。

这对我有用,而无需更改异步设置。

Screenshot

答案 10 :(得分:-4)

您必须将红点放在您将进行调试的代码行的左侧。 如果没有,你会在 IntelliJ 上得到这个按摩