简体   繁体   English

Tomcat java.lang.ClassNotFoundException

[英]Tomcat java.lang.ClassNotFoundException

I have Tomcat 7.0.42 and Java JDK 1.7.0_40 . 我有Tomcat 7.0.42和Java JDK 1.7.0_40 Through the browser I deployed in Tomcat a WAR contaning just two JSP pages. 通过浏览器,我在Tomcat中部署了仅包含两个JSP页面的WAR Tomcat runs as "tomcat" user and all the files in the Tomcat folder have "tomcat" as owner. Tomcat以“ tomcat”用户身份运行,并且Tomcat文件夹中的所有文件均以“ tomcat”作为所有者。 Java JDK instead belongs to the user "uucp" and group "143". Java JDK而是属于用户“ uucp”和组“ 143”。 In the startup script of Tomcat I added export JAVA_HOME=/var/jdk1.7.0_40 (but if I give the command echo $JAVA_HOME with user "tomcat" I get nothing). 在Tomcat的启动脚本中,我添加了export JAVA_HOME=/var/jdk1.7.0_40 (但如果我向用户“ tomcat”提供命令echo $JAVA_HOME ,我将一无所获)。

Sometimes when I try to access the JSP pages of the deployed app I get the error: 有时,当我尝试访问已部署应用程序的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)

And if I restart Tomcat, I will be able to access those JSP pages correctly and after a certain period of time the error shows up again. 而且,如果我重新启动Tomcat,我将能够正确访问那些JSP页面,并且在一段时间后,错误会再次出现。

However I need to find a way to access those JSP pages correctly without the need to restart Tomcat. 但是,我需要找到一种无需重新启动Tomcat即可正确访问那些JSP页面的方法。

  • Adding JAVA_HOME will not set environment variables for the user tomcat, if you want to set it for the user, you have to define it in .bashrc on *nix system or in environment variable on on Windows. 添加JAVA_HOME不会为用户tomcat设置环境变量,如果要为用户设置它,则必须在* nix系统的.bashrc或Windows的环境变量中定义它。
  • This error means tomcat can not find generated class file for your jsp page, on standalone tomcat installation generated files are located on /work/Catalina/localhost on eclipse it will be in .metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps 此错误意味着tomcat不能为您的jsp页面找到生成的类文件,在独立的tomcat安装中,生成的文件位于eclipse上的/work/Catalina/localhost上,它将位于.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM