我有代码,其中我有一个名为:
package com.test.core.it;
仅此包内的所有类。有一个 .jsp
文件,其中有这行代码:
test.executeAllTestCase();
test
是 TestA
的实例在包装中 com.test.core.it
. executeAllTestCase
有这样的行:
TestB.getInstance()
TestB
也在同一个包中。
我构建了 war 并部署到 tomcat。当点击 url 时:
http://localhost:8080
jsp
正在被调用,这让我抛出了异常:
javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class com.test.core.it.TestB
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
我不确定,我在哪里犯了错误。
编辑
我可以看到类已加载到 WEB-INF
中-> classes
-> <package wise directory>
-> TestA.class, TestB.class
最佳答案
可能是类 TestB 静态初始化期间的异常。
第一次。当 java 加载一个类时,会执行静态初始化程序。如果你有一个异常,java 将不会再次尝试加载类定义,而是抛出一个 NoClassDefFoundError。所以也许在第一个 NoClassDefFoundError 之前有一个疏忽异常
关于点击 jsp 时出现 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27565366/