当前位置: 首页 > 面试题库 >

“ NoClassDefFoundError:无法初始化类”错误

广楚
2023-03-14
问题内容

当我运行项目时,会收到此错误的大量输出:

Sep 9, 2019 8:22:23 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Jersey threw exception
java.lang.NoClassDefFoundError: Could not initialize class SpringFactory
        at com.point2.prospect.persistence.hibernate.HibernateTransactionInterceptor.doFilter(HibernateTrans
actionInterceptor.java:17)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at com.point2.prospect.restapi.ServerErrorInterceptor.doFilter(ServerErrorInterceptor.java:27)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)

我注意到此问题的出现方式是在整个网络上被询问,但没有真正的答案。这种错误的一般原因是什么?


问题答案:

NoClassDefFound错误是一个模糊的错误,通常隐藏着更严重的问题。它是不一样的ClassNotFoundException(被抛出时,该类只是普通的不存在)。

如javadocs所示,NoClassDefFound 可能指示该类不存在,但是通常在类加载器为该类加载字节并在其上调用“ defineClass”后抛出该类。还要仔细检查你的完整堆栈跟踪是否有其他线索或可能的“原因”异常(尽管你的特定回溯没有显示任何异常)。

当你遇到NoClassDefFoundError时,首先要看的是类的静态位,即在类定义期间发生的任何初始化。如果失败,它将抛出NoClassDefFoundError-应该抛出ExceptionInInitializerError并指出问题的详细信息,但以我的经验,这些很少见。它只会在第一次尝试定义类时执行ExceptionInInitializerError,之后将仅抛出NoClassDefFound。因此,请查看较早的日志。

因此,我建议你查看该HibernateTransactionInterceptor行中的代码,并查看其要求。似乎无法定义类SpringFactory。因此,也许可以检查该类中的初始化代码,这可能会有所帮助。如果可以调试,请在(17)的最后一行将其停止并进行调试,以便尝试查找导致异常的确切行。另外,请在日志中向上检查,如果你非常幸运,可能会出现ExceptionInInitializerError。



 类似资料:
  • 它在oracle jdk上运行良好,但在OpenJDK上运行失败。我没有使用任何groovy libs。这是基于maven的spring boot项目。

  • 我需要在Gradle中查看我的依赖项,以修复多个SLF4J绑定的问题。 但是,当我运行“Gradle依赖项”时,我得到错误: 无法初始化类org.codehaus.groovy.runtime.InvokerHelper 在堆栈溢出的类似问题中,Android Studio无法初始化类org.codehaus.groovy.runtime.InvokerHelper 建议 安装Java jdk-1

  • 当我在iReport 5.1.0中预览JasperReports的报告时,它执行得很好。它包含一个饼图,当我需要从jsp文件运行它时,问题就来了。 烧烤-1.5-beta1.jar commons-beanutils-1.8.2.jar Commons-Collections-3.2.1.jar commons-digester-2.1.jar commons-javaflow-20060411.

  • 我用Xcode开发了一个“Hello iOS”应用程序,可以在iOS模拟器上用Appium进行测试。然而,当我试图在真正的iPhone/iPad设备上测试同一个应用程序时,我收到了以下错误消息。 这是我的环境。 我尝试了这个命令“brew安装--HEAD ideviceInster”,但得到了另一条错误消息。 有什么解决办法吗?谢谢

  • 问题内容: 是我自己的一类。该类与主类位于同一JAR文件中。因此,这不应该是因为classpath中缺少任何JAR。 当我通过查阅JAR文件时,可以看到其中列出的内容。 顺便说一句:代码在我的本地计算机上运行良好。但是当我将其与某些脚本一起部署到Linux服务器上时无法工作。所以我认为这不是代码的问题。但是出于某种原因。部署过程很难跟踪。 可能是什么问题呢? 问题答案: 我最好的选择是这里有一个问