【问题标题】:Java Web Application - Servlet ProblemJava Web 应用程序 - Servlet 问题
【发布时间】:2011-04-20 18:06:36
【问题描述】:

我有执行以下操作的 servlet:

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        request.getAttribute("username");
        request.getAttribute("password");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        LoginManager lm = new LoginManager(username.trim(), password.trim());

每当我到达最后一个tomcat apache“崩溃”并显示以下错误消息时:

exception

javax.servlet.ServletException: Servlet execution threw an exception

root cause

java.lang.NoClassDefFoundError: javax/xml/rpc/ServiceException
    servlets.LoginServlet.doPost(LoginServlet.java:20)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

java.lang.ClassNotFoundException: javax.xml.rpc.ServiceException
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1666)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1511)
    servlets.LoginServlet.doPost(LoginServlet.java:20)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

请帮忙 谢谢!

在 WEB-INF/lib 文件夹中包含 jaxrpc.jar 时出现以下错误:

根本原因

java.lang.NoClassDefFoundError: org/apache/axis/AxisFault java.lang.ClassLoader.defineClass1(本机 方法) 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:2778) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1139) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1511) java.lang.ClassLoader.defineClass1(本机 方法) 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:2778) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1139) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1511) servlets.LoginServlet.doPost(LoginServlet.java:20) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

根本原因

java.lang.ClassNotFoundException: org.apache.axis.AxisFault org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1666) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1511) java.lang.ClassLoader.defineClass1(本机 方法) 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:2778) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1139) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1511) java.lang.ClassLoader.defineClass1(本机 方法) 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:2778) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1139) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1511) servlets.LoginServlet.doPost(LoginServlet.java:20) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

【问题讨论】:

标签: java web-applications tomcat


【解决方案1】:

Tomcat 版本和 JDK/JRE 版本会有所帮助。

您的 webapp 似乎缺少 WEB-INF/lib 中的一些必需 jar;特别是 jaxrpc jar。

【讨论】:

    【解决方案2】:

    服务器告诉您缺少一个库,即包含 javax.xml.rpc.ServiceException 的库。

    但是,您提供的代码似乎没有使用此类,所以我认为您的问题与您的 Servlet 无关。

    【讨论】:

    • 我假设 LoginManager 依赖于 jaxrpc。
    • 导入 javax.xml.rpc.*;公共类 LoginManager {
    【解决方案3】:

    在我看来,好像在某个地方有一个 Apache Axis 依赖项,需要在您的应用程序的构建路径中解决。很有可能,这是在您的 JAXRPC 调用的错误处理中。

    【讨论】:

      【解决方案4】:

      您遇到第二个异常的原因:

      java.lang.NoClassDefFoundError: org/apache/axis/AxisFault

      这是因为您已加入 javax.xml.rpc.ServiceException。我假设您正在使用 Axis,否则您将不会收到 AxisFault。有一些罐子不见了。

      如果您希望 AxisFault 消失,请将 axis.jar(假设您正在运行旧轴 1)复制到 WEB-INF/lib 文件夹。

      【讨论】:

        【解决方案5】:

        抱歉回复晚了..这可能会帮助将来的人..

        java.lang.ClassNotFoundException: javax.xml.rpc.ServiceException 它说它找不到 javax.xml.rpc jar。 请将依赖项添加到您的 POM 文件中。

        <dependency>
            <groupId>  javax.xml.rpc  </groupId>
            <artifactId>  javax.xml.rpc-api  </artifactId>
            <version>  1.1.1  </version>
        </dependency>
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-26
        • 2010-09-18
        • 1970-01-01
        • 2016-03-29
        • 1970-01-01
        • 2016-02-01
        相关资源
        最近更新 更多