【问题标题】:Tomcat java.lang.ClassNotFoundExceptionTomcat java.lang.ClassNotFoundException
【发布时间】:2013-11-18 15:36:09
【问题描述】:

我有 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 页面,并且在一段时间后出现错误 又出现了。

但是我需要找到一种方法来正确访问这些 JSP 页面,而无需重新启动 Tomcat。

【问题讨论】:

  • 我也有同样的问题.. 我现在正在研究它

标签: java jsp tomcat war


【解决方案1】:
  • 添加JAVA_HOME不会为用户tomcat设置环境变量,如果你想为用户设置它,你必须在*nix系统上的.bashrc或Windows上的环境变量中定义它。
  • 这个错误意味着tomcat找不到为你的jsp页面生成的类文件, 在独立的 tomcat 安装生成的文件位于 /work/Catalina/localhost 在日食上,它将在.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps

【讨论】:

    猜你喜欢
    • 2016-02-23
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多