Mid*_*ido 6 tomcat servlets servletexception
我试图让我的servlet运行,我一直在寻找2天,并尝试每一个可能的解决方案,没有运气.servet类位于相应的文件夹中(即在包名称下).我还将我的servlet中需要的jar文件添加到lib文件夹中.web.xml文件映射url并定义servlet.所以我在文档中做了一切,wt人在这里说,但仍然收到此错误:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Error instantiating servlet class assign1a.RPCServlet
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:282)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:357)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1687)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:619)
root cause
java.lang.NoClassDefFoundError: assign1a/RPCServlet (wrong name: server/RPCServlet)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
java.lang.ClassLoader.defineClass(ClassLoader.java:616)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2820)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1143)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1638)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:282)
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:357)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1687)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
java.lang.Thread.run(Thread.java:619)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.5 logs.
Run Code Online (Sandbox Code Playgroud)
这也是我的servlet代码:
package assign1a;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lib.jsonrpc.RPCService;
public class RPCServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = -5274024331393844879L;
private static final Logger log = Logger.getLogger(RPCServlet.class.getName());
protected RPCService service = new ServiceImpl();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html");
response.getWriter().write("rpc service " + service.getServiceName() + " is running...");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
try {
service.dispatch(request, response);
} catch (Throwable t) {
log.log(Level.WARNING, t.getMessage(), t);
}
}
}
Run Code Online (Sandbox Code Playgroud)
请帮帮我:)谢谢.
编辑:这是我的web.xml文件的内容
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<servlet>
<servlet-name>jsonrpc</servlet-name>
<servlet-class>assign1a.RPCServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jsonrpc</servlet-name>
<url-pattern>/rpc</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
我注意到(wrong name: server/RPCServlet)错误消息中的这句话。
这通常意味着类文件的包名称与 jar/war 中的目录结构不同。
也许您最初放置RPCServlet.java在名为 的目录下server,然后RPCServlet.java移至assign1a?
或者原始包可能定义为:
package server;
Run Code Online (Sandbox Code Playgroud)
然后你后来把它改成了
package assign1a;
Run Code Online (Sandbox Code Playgroud)
不管怎样,为了解决这个问题,我建议你删除所有编译的东西(类文件、war 文件等)。停止 tomcat,然后删除该<TOMCAT_HOME>/work目录以确保所有内容都消失。
然后,检查并确保 RPCServlet.java 位于名为 的文件夹中assign1a,并确保该包定义为:
package assign1a;
Run Code Online (Sandbox Code Playgroud)
重新编译/重建 war,你应该处于更好的状态。也许尝试在 Eclipse(或 Netbeans)中构建 war,因为这样它不会让您编译到与类文件包名称不匹配的文件夹中。
祝你好运。- 戴夫
| 归档时间: |
|
| 查看次数: |
27888 次 |
| 最近记录: |