![](/img/trans.png)
[英]javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/dbcp/ConnectionFactory
[英]javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory
我正在尝试使用DBCP使用BasicDataSource
建立与Oracle数据库的BasicDataSource
。
我从这里下载commons-dbcp-1.4-bin.zip
。
类路径上有三个jar文件。
我正在使用以下代码来建立连接。
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-pool
是commons-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.