Java Tomcat NoClassDefFoundError

Java Tomcat NoClassDefFoundError,java,jsp,tomcat,Java,Jsp,Tomcat,在编辑代码以使用JNI之后,我在JSP上得到了一个NoClassDefFoundError。当我在WEB-INF/classes/matrixcalculator路径中保存了所有的.java和.class时,我似乎无法理解为什么。.h、.c和.so在WEB-INF/classes/中,就在matrixcalculator文件夹的旁边。这是代码错误日志: java.lang.NoClassDefFoundError: Could not initialize class matrixcalcula

在编辑代码以使用JNI之后,我在JSP上得到了一个
NoClassDefFoundError
。当我在
WEB-INF/classes/matrixcalculator
路径中保存了所有的
.java和.class
时,我似乎无法理解为什么。
.h、.c和.so
WEB-INF/classes/
中,就在
matrixcalculator
文件夹的旁边。这是代码错误日志:

java.lang.NoClassDefFoundError: Could not initialize class matrixcalculator.MatrixCalculator
org.apache.jsp.adminOnly_jsp._jspService(adminOnly_jsp.java:69)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:750)
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:720)
org.apache.jsp.requestPermission_jsp._jspService(requestPermission_jsp.java:87)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
它以前可以工作,但在添加了本机函数、loadLibrary和其他文件之后,我发现了这个错误。我尝试将文件更改为
WEB-INF/classes/matrixcalculator
中的相同文件夹,但仍然无法摆脱错误。我相信这与将路径导出到MatrixCalculator.class所在的位置有关,但我真的无法理解它的位置和原因。除非我把他的文件放在Tomcat的公用文件夹里,但我可能错了。另外,我直接调用JSP,而不是使用Tomcat管理器

我添加了
language=“java”
,在java bean中得到了一个错误:

org.apache.jasper.JasperException: An exception occurred processing JSP page /adminOnly.jsp at line 8
5:-%> 6: 7: 8: 9: 10: 11:

这是静态块:

    static {
    System.loadLibrary("methodsViaC");
}
添加try/catch后出现新错误(异常e):

java.lang.UnsatifiedLink错误:java.library.path中没有methodsViaC
loadLibrary(ClassLoader.java:1886)
java.lang.Runtime.loadLibrary0(Runtime.java:849)
java.lang.System.loadLibrary(System.java:1088)
matrixcalculator.matrixcalculator.(matrixcalculator.java:77)
org.apache.jsp.adminOnly\u jsp.\u jsp服务(adminOnly\u jsp.java:69)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javaservlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javaservlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:750)
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:720)
org.apache.jsp.requestPermission\u jsp.\u jsp服务(requestPermission\u jsp.java:87)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javaservlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javaservlet.http.HttpServlet.service(HttpServlet.java:727)

但是如果我刷新页面,我会发布第一个错误

此错误意味着无法初始化类,但并不意味着找不到该类。所以,我的建议是检查matrixcalculator.matrixcalculator类中的静态变量和静态初始化块。看起来在静态块中引发了未捕获的异常。

MatrixCalculator类中是否有初始化的静态块?是的,我会立即发布静态块!编辑:静态块有问题。所以在静态声明中,我添加了try/catch方法?使用catch(Exception e)?您可以尝试为debug proposts执行此操作,并查看是否抛出异常以及异常类型。只需编写以登录catch语句。不过,我认为您需要修复类的初始化。在我看来,您将收到不满意的链接错误。让我们检查一下,我知道你说的错误了。在问题中发布信息!您可以在此处找到设置java.library.path的位置
java.lang.UnsatisfiedLinkError: no methodsViaC in java.library.path
java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)
java.lang.Runtime.loadLibrary0(Runtime.java:849)
java.lang.System.loadLibrary(System.java:1088)
matrixcalculator.MatrixCalculator.<clinit>(MatrixCalculator.java:77)
org.apache.jsp.adminOnly_jsp._jspService(adminOnly_jsp.java:69)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:750)
org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:720)
org.apache.jsp.requestPermission_jsp._jspService(requestPermission_jsp.java:87)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)