首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat内部错误

问Tomcat内部错误
EN

Stack Overflow用户
提问于 2011-06-13 22:37:05
回答 2查看 1.3K关注 0票数 1

我有一个AuthorizationServlet,当用户单击登录页面中的按钮时调用。下面是servlet的doPost方法的一段代码:

代码语言:javascript
复制
        AuthorizationBean bean = new AuthorizationBean();
        String login = (String) request.getSession().getAttribute("login");
        String password = (String) request.getSession().getAttribute("password");
        try {
            UserType type = bean.getRoleOfUser(login, password);
            switch(type) {
                ...
            }
        } catch (DaoException ex) {
            throw new ServletException(ex.getMessage());
        }

我省略了一些代码,因为它不适用于问题。实际上,DaoException只能在方法getRoleOfUser中的UserType type = bean.getRoleOfUser(login, password);这一行抛出。我使用tomcat的连接池连接数据库(在第一篇文章here中描述了我是如何获得连接的)。

下面是我的context.xml,它创建db连接的资源:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/Project">
    <Resource name="jdbc/Project" auth="Container"
        type="javax.sql.DataSource" maxActive="100"
        maxIdle="30" maxWait="10000"
        username="name"
        password="password"
        driverClassName="oracle.jdbc.driver.OracleDriver"
        url="jdbc:oracle:thin:@127.0.0.1:1521:XE"/>
</Context>

当调用AuthorizationServlet时,我得到这样的错误:

代码语言:javascript
复制
javax.servlet.ServletException: Error instantiating servlet class com.tspp.common.AuthorizationServlet
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
    org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
    java.lang.Thread.run(Thread.java:662)
root cause

java.lang.NoClassDefFoundError: com/tspp/dao/exceptions/DaoException
    java.lang.Class.getDeclaredConstructors0(Native Method)
    java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
    java.lang.Class.getConstructor0(Class.java:2699)
    java.lang.Class.newInstance0(Class.java:326)
    java.lang.Class.newInstance(Class.java:308)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
    org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
    java.lang.Thread.run(Thread.java:662)
root cause

java.lang.ClassNotFoundException: com.tspp.dao.exceptions.DaoException
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    java.lang.Class.getDeclaredConstructors0(Native Method)
    java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
    java.lang.Class.getConstructor0(Class.java:2699)
    java.lang.Class.newInstance0(Class.java:326)
    java.lang.Class.newInstance(Class.java:308)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)
    org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
    java.lang.Thread.run(Thread.java:662)

我尝试过对其进行调试,但调试器甚至没有使用servlets的doPost方法。实际上,当我启动程序时(在servlet激活之前)抛出了最后两个异常。

我该如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-13 22:39:03

确保您的所有类都在WEB-INF/classes中

票数 2
EN

Stack Overflow用户

发布于 2011-06-13 22:41:05

JVM (System.loadClass()方法)找不到您的类com/tspp/dao/exceptions/DaoException,因此您拥有一个ClassNotFoundException。

确保已编译代码并将其包含在项目的WEB-INF\classes文件夹中。如果它在jar中,请确保在JAR中找到该类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6331879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档