java - 如何修复 java.sql.SQLException。没有适合 jdbc 的驱动程序
问题描述
当我尝试从命令行运行文件时,我收到错误 java.sql.SQLException No适合 jdbc:derby:books 的驱动程序。在 Eclipse 中,一切正常。我读了一本书“Java,如何编程”Deitel&Deitel,该文件就是其中的一个示例。当我尝试从命令行编译程序时,它没有显示错误,但问题在于运行。请帮忙
public class DisplayAuthors {
public static void main(String args[]) {
final String DATABASE_URL = "jdbc:derby:books";
final String SELECT_QUERY =
"SELECT authorID, firstName, lastName FROM authors";
String user="deitel";
String password="deitel";
try (
Connection connection = DriverManager.getConnection(
DATABASE_URL, user,password);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(SELECT_QUERY)) {
ResultSetMetaData metaData = resultSet.getMetaData();
int numberOfColumns = metaData.getColumnCount();
System.out.printf("Table Authors database books:%n%n");
for (int i = 1; i <= numberOfColumns; i++) {
System.out.printf("%-8s\t", metaData.getColumnName(i));
}
System.out.println();
while (resultSet.next()) {
for (int i = 1; i <= numberOfColumns; i++) {
System.out.printf("%-8s\t", resultSet.getObject(i));
}
System.out.println();
}
}
catch (SQLException sqlException) {
sqlException.printStackTrace();
}
}
}
命令行执行:
javac DisplayAuthors.java
java DisplayAuthors
解决方案
您正在命令行中运行没有依赖项的类文件。
在您的 Eclipse IDE 中,您可能有一个 derby.jar 或类似的依赖项,并且 Eclipse 会自动将所有内容添加到执行中。当您直接从命令行执行时,需要添加所有依赖项。
如果您注意到在 MANIFEST.MF 中创建具有依赖项的可运行 jar,并且您尝试直接执行该类,则需要添加 -cp 参数以及所有依赖项的路径:
例子:
java -cp Derby.jar;. DisplayAuthors
总结 Derby.jar 和您的类在同一个地方,没有更多的依赖项要添加。
更多信息:
推荐阅读
- python - 为永远循环添加小延迟以减少 cpu 使用 python
- java - JAXB:具有 2 个名称空间的解组对象导致空值
- django - 当我使用 nginx 和 docker-compose 时在上游找不到主机
- java - 查找二维数组中每个子数组的总和
- python - Python Globbing 图像目录
- c++ - 即使服务器端仍在侦听,与 Poco Websocket 服务器的连接也会断开连接
- javascript - 具有不同模式的对象数组 - JOI
- html - 为什么屏幕变小时与 div 之间的差距会变大,我该如何防止?
- go - 试图渲染一个模板,得到一个错误 html/template: "templates/index.html" is undefined
- python - 如何随着时间的推移执行python字符串?