首页 > 解决方案 > 如何修复 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 

标签: javasqldatabasejdbc

解决方案


您正在命令行中运行没有依赖项的类文件。

在您的 Eclipse IDE 中,您可能有一个 derby.jar 或类似的依赖项,并且 Eclipse 会自动将所有内容添加到执行中。当您直接从命令行执行时,需要添加所有依赖项。

如果您注意到在 MANIFEST.MF 中创建具有依赖项的可运行 jar,并且您尝试直接执行该类,则需要添加 -cp 参数以及所有依赖项的路径:

例子:

java -cp Derby.jar;. DisplayAuthors

总结 Derby.jar 和您的类在同一个地方,没有更多的依赖项要添加。

更多信息:

Java 命令行 (Oracle Java9 SE)

“java -cp”和“java -jar”的区别?


推荐阅读