我有 Tomcat 7.0.42 和 Java JDK 1.7.0_40。通过浏览器,我在 Tomcat 中部署了一个仅包含两个 JSP 页面的 WAR。
Tomcat 以“tomcat”用户身份运行,Tomcat 文件夹中的所有文件都以“tomcat”为所有者。 Java JDK 反而属于
用户“uucp”和组“143”。在 Tomcat 的启动脚本中,我添加了 export JAVA_HOME=/var/jdk1.7.0_40
(但如果我
使用用户“tomcat”发出命令 echo $JAVA_HOME
我什么也得不到)。
有时,当我尝试访问已部署应用程序的 JSP 页面时,我会收到错误消息:
SEVERE: Servlet.service() for servlet [jsp] in context with path [/examples] threw exception [java.lang.ClassNotFoundException: org.apache.jsp.test1_jsp] with root cause
java.lang.ClassNotFoundException: org.apache.jsp.test1_jsp
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:132)
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:143)
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:172)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
如果我重新启动 Tomcat,我将能够正确访问那些 JSP 页面,并在一段时间后出现错误 再次出现。
但是我需要找到一种无需重启 Tomcat 即可正确访问这些 JSP 页面的方法。
最佳答案
- 添加JAVA_HOME不会为用户tomcat设置环境变量,如果要为用户设置,则必须在*nix系统的
.bashrc
中或在环境变量中定义。 window 。 - 此错误表示 tomcat 无法找到为您的 jsp 页面生成的类文件,
在独立的 tomcat 安装上,生成的文件位于
/work/Catalina/localhost
在 Eclipse 上它将位于.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps
关于java - Tomcat java.lang.ClassNotFoundException 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20051655/