ClassNotFoundException:sun.misc.GC

14

版本 Java:10.0.1 Tomcat:8.0.36 Ubuntu:18.04(64位) Eclipse:Photon(64位)

错误:当我运行Tomcat服务器时,我发现以下错误。如果可能的话,请不要告诉我降低版本,因为我喜欢使用最新技术。

    SEVERE: Failed to trigger creation of the GC Daemon thread during Tomcat start to prevent possible memory leaks. This is expected on non-Sun JVMs.
java.lang.ClassNotFoundException: sun.misc.GC
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:291)
at org.apache.catalina.core.JreMemoryLeakPreventionListener.lifecycleEvent(JreMemoryLeakPreventionListener.java:286)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:394)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at org.apache.catalina.startup.Catalina.load(Catalina.java:580)
at org.apache.catalina.startup.Catalina.load(Catalina.java:603)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:310)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:484)

3
尝试升级到 Tomcat 9。 - Keaz
1
降级到Java 8。 - Stephen C
1个回答

18

Tomcat 8引用了sun.misc.GC,但在Java 9中已被移除 - 因此您会遇到错误。

请不要告诉我如果可能的话要降低版本,因为我喜欢使用最新技术。

那我就告诉你反过来做吧!你应该使用Tomcat 9而不是Tomcat 8。这样错误就会消失了。


#似乎Tomcat 9仍然引用sun.misc.GC: SEVERE [main] org.apache.catalina.core.JreMemoryLeakPreventionListener.lifecycleEvent在Tomcat启动期间无法触发GC守护线程的创建,以防止可能的内存泄漏。这在非Sun JVM上是可以预料的。 java.lang.ClassNotFoundException: sun.misc.GC服务器版本:Apache Tomcat/9.0.13 服务器构建时间:2018年11月2日14:27:55 UTC 服务器编号:9.0.13.0 操作系统名称:Linux 操作系统版本:4.4.0-62-generic JVM版本:9-internal+0-2016-04-14-195246.buildd.src JVM供应商:Oracle Corporation - Liu Yi
3
升级到Tomcat 9解决了我的问题。只需确保您拥有所有这些:本地安装的openjdk 11、项目facet java 11,从Apache下载最新的Tomcat 9(在某些软件包仓库中,存在一个错误版本,仍然引用sun.misc.GC)。 - nagylzs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接