繁体   English   中英

javax.servlet.ServletException:java.lang.NoClassDefFoundError:org / apache / commons / pool / KeyedObjectPoolFactory

[英]javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory

我正在尝试使用DBCP使用BasicDataSource建立与Oracle数据库的BasicDataSource

我从这里下载commons-dbcp-1.4-bin.zip

类路径上有三个jar文件。

  1. 公地DBCP-1.4
  2. 公地DBCP-1.4-源
  3. 公地DBCP-1.4-的javadoc

我正在使用以下代码来建立连接。

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.dbcp.BasicDataSource;

public class DatabaseConnection {

    private final static BasicDataSource BASIC_DATA_SOURCE = new BasicDataSource();
    private final static String SQL = "SELECT * FROM admin WHERE login_id=? AND admin_pwd=?";

    static {
        BASIC_DATA_SOURCE.setDriverClassName("oracle.jdbc.OracleDriver");
        BASIC_DATA_SOURCE.setUrl("jdbc:oracle:thin:@localhost:1521:xe");
        BASIC_DATA_SOURCE.setUsername("wagafashiondb");
        BASIC_DATA_SOURCE.setPassword("root");
    }

    private static Connection getConnection() throws SQLException {
        return BASIC_DATA_SOURCE.getConnection();
    }

    public boolean exists(String userName, String password) throws SQLException {
        Connection connection = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        boolean exists = false;

        try {
            connection = getConnection();
            ps = connection.prepareStatement(SQL);
            ps.setString(1, userName);
            ps.setString(2, password);
            rs = ps.executeQuery();
            exists = rs.next();
        } finally {
            try {
                if (connection != null) {connection.close();}
                if (ps != null) {ps.close();}
                if (rs != null) {rs.close();}
            } catch (SQLException e) {

            }
        }
        return exists;
    }
}

它引发以下异常,

javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory

似乎暗示我使用了错误的来源。 导致此异常的原因可能是什么?

您需要在类路径上获取commons-pool库(JAR)。 该事实在项目的依赖项列表中表示为commons-poolcommons-dbcp 的依赖项

说明

基本上, NoClassDefFoundError表示Java执行原来需要一个不在类路径上的特定类。 这是因为类需要其他类(通常在import指示)。 在您的情况下(至少), commons-dbcp一个类声明了对org/apache/commons/pool/KeyedObjectPoolFactory

类的名称使用/作为分隔符。 如果这是一个通用名称(而不是您自己的类),则可以尝试通过在Google中键入全名(例如org/apache/commons/pool/KeyedObjectPoolFactory )来查找从何处获取名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM