在生产Tomcat服务器上,我的webapp找不到位于WEB-INF / lib文件夹中的jar。在发展方面,一切都很好。
堆栈跟踪
javax.servlet.ServletException: Could not initialize class util.HibernateUtil web.Engine.service(Engine.java:58) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:517) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162) root cause java.lang.NoClassDefFoundError: Could not initialize class util.HibernateUtil web.Engine.service(Engine.java:31) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:517) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162) note The full stack trace of the root cause is available in the Apache Tomcat/5.5 logs.
开发配置
Tomcat 5.5
OS X 10.6
Eclipse
生产配置
Tomcat 5.5
Linux Debian
感谢您的回答!
答案 0 :(得分:1)
默认情况下,Debian发行版附带的Tomcat具有非常严格的Java安全管理器。我的猜测是你正在使用打包版本并且它禁止某些东西。您发布的跟踪的最后一行中提到的日志中很可能提供“ something ”:
注意Apache Tomcat / 5.5日志中提供了根本原因的完整堆栈跟踪。
您必须放宽限制(检查/etc/tomcat5.5/policy.d
)或将其关闭。与您的管理员交谈。
答案 1 :(得分:1)
我看到一个非常相似的东西需要来自另一个jar的类,而 jar不在类路径上。
查看Tomcat日志中堆栈跟踪的根本原因。这很可能会揭示出了什么问题。