【问题标题】:Eclipse does not seem to compile servlet, causing java.lang.ClassNotFoundExceptionEclipse似乎没有编译servlet,导致java.lang.ClassNotFoundException
【发布时间】:2012-11-15 04:57:10
【问题描述】:

目前我正在使用 Ubuntu 12.04LTS、Eclipse IDE 和 Apache Tomcat 7.0.27,但我没有完成工作。

我在“WebContent/index.jsp”中创建了一个简单的 jsp 页面“index.jsp”。我制作了一个名为“EmployeeClass”的servlet,它位于“com.pack.web”包中。 在 Jsp 页面中,我有一个带有 get 方法和操作的表单,如下所示:

<form method="GET" action="hidden.do">

在 web.xml 我也有:

<servlet>
    <servlet-name>Searcher</servlet-name>
    <servlet-class>com.pack.web.EmployeeClass</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Searcher</servlet-name>
    <url-pattern>/hidden.do</url-pattern>
</servlet-mapping>

我做了一个简单的servlet“EmployeeClass”,它在包中:

package com.pack.web;

在这个 servlet 中,我有一个 doGet 方法:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    out.println("Something is happening");
}

我终于运行了我的项目,点击提交按钮后,我得到了这个:

javax.servlet.ServletException: Error instantiating servlet class com.pack.web.EmployeeClass
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    java.lang.Thread.run(Thread.java:662)

根本原因

java.lang.ClassNotFoundException: com.pack.web.EmployeeClass
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
    java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    java.lang.Thread.run(Thread.java:662)

【问题讨论】:

  • 您的课程在 ClassPath 中吗?默认文件夹是WEB-INF/classes,你能仔细检查一下吗?
  • 检查你的项目设置的编译路径。
  • @PbxMan 不,WEB-INF/classes 中没有任何类。我的 servlet 没有编译。

标签: eclipse servlets classnotfoundexception


【解决方案1】:

终于在 2 周 15 小时 34 分钟后终于找到了解决方案。通过打开显然意外关闭的自动构建解决了该问题。

项目 -> 自动构建

【讨论】:

    猜你喜欢
    • 2011-12-28
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多