1.目前可以搜到的主流解决方法(亲测自己用不好使版)

报错问题:

搜到的解决方法(不能用版):

目前网上大多数解决方法都是说取消idea中此处的勾选,但是我在这里取消勾选后,警告仍然存在。于是接下来通过不断的查资料对这个警告也有了一定的认识,看到这里,没耐心的小伙伴可以先行退出,因为这个警告完全可以不解决。接下来将介绍这个警告出现的原因及强迫症的解决方法

2.Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended出现的原因

此警告的翻译

警告原因:

Java HotSpot(TM) 64-Bit Server VM 发出这个警告的原因是因为当前应用程序在加载类时使用了 ClassLoader 的共享机制,但是共享只支持引导加载程序类。但是JVM 试图将一些系统类库(例如 rt.jar、charsets.jar 等)加载到共享内存中,但这些类库并不符合共享内存的要求,从而导致警告。

解决办法:

懒人版

Java虚拟机(JVM)会在启动时加载并使用系统类库,这些类库包括rt.jar、charsets.jar等。如果 JVM 无法将这些系统类库加载到共享内存中,它会按照非共享内存的方式单独加载这些类库,这不会对应用程序产生任何影响,但会导致 "Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended" 这个警告。这个警告也并不会影响测试类的运行结果(题主这里时这样的)。所以这个警告时可以直接忽略的。懒人解决方法就是直接忽略(我推荐,因为我懒,并且众所周知,程序能跑起来且结果正确就不用动了)。

强迫症版:

当然了,会有一些小伙伴不能接受自己的运行结果中存在这一个鲜红的警告:

经过好长时间的百度,只能确定想要彻底消除警告需要禁止启动优化,不过这里试了好多方法都没实现,要是有哪位小伙伴找到了拜托在评论区评论一下,让我学习一下。

一下内容转载自gpt(仅供参考版);

实际上,在默认情况下,JVM会自动将某些系统类库加载到共享内存中。如果出现 "Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended" 这个警告,说明在这种情况下,某些类库不符合共享内存的要求,无法使用共享内存来加载。

通常情况下,如果您想将自己编写的类库放入共享内存中加载,可以通过修改 JVM 启动参数来实现。例如,可以使用 -Xshare:off 参数关闭共享内存的支持,或者使用 -Xshare:on 参数开启共享内存的支持并指定共享库的名字,也可以使用 -Xshare:auto 参数让 JVM 自动确定是否使用共享内存。

但是,请注意,对于 JDK 提供的系统类库,不建议手动修改 JVM 启动参数来强制将它们加载到共享内存中。因为这些类库已经经过优化,对于绝大多数应用来说,它们已经足够快了,并没有必要再进行额外的优化。

总之,如果出现 "Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended" 这个警告,您可以尝试使用 -Xshare:off 参数关闭共享内存的支持,从而避免这个警告。但需要注意的是,在绝大多数情况下,这个警告并不会对应用程序产生实质性的影响,可以忽略它。

个人总结:

如果这个警告不影响目前程序中测试类的运行,那就大胆忽略吧,以为我这里在试图取消这个警告的警告的时候曾一度令测试类无法运行。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐