项目 JAR 无法访问 Derby 驱动程序

我正在开发一个 Java 项目,我们希望使用嵌入式数据库,使用 JDBC 进行连接,并使用 Derby 作为数据库。这是一个部署到可执行 JAR 的 Maven 项目。


我已将 Derby 作为对项目的依赖项。我正在使用 Java 1.8、Maven 3.8.0 和 Derby 10.8.3.0。


POM.xml


<!-- Derby for database connection -->

<dependency>

  <groupId>org.apache.derby</groupId>

  <artifactId>derby</artifactId>

  <version>10.8.3.0</version>

</dependency>

App.java


public class App {


public static void main(String[] args) {

    JOptionPane.showMessageDialog(null, "Hello World.");



    SampleDB sdb = new SampleDB();

    try {

        sdb.connectionToDerby();

        sdb.sampleDBUsabe();

    } catch (SQLException sqle) {

        System.out.println(sqle);

    }

}

}

SampleDB.java


public class SampleDB {

private Connection conn;


public void connectionToDerby() throws SQLException {

    String dbURL = "jdbc:derby:sampledb;create=true";

    conn = DriverManager.getConnection(dbURL);

}


public void sampleDBUsabe() throws SQLException {

    Statement stmt = conn.createStatement();


    //Create Table

    stmt.execute("Create Table USERS (id int primary key, name varchar(30))");

...

}

当我执行生成的 .JAR 文件时,出现错误:


$ java -jar target/puzzle.game-0.0.1-SNAPSHOT.jar

java.sql.SQLException: No suitable driver found for jdbc:derby:sampledb;create=true

我怀疑这是由于 Derby 驱动程序不是我的类路径的一部分。有没有办法使用 maven 或 settings.xml 文件来做到这一点,以便在用户运行mvn install目标时自动发生这种情况?


浮云间
浏览 120回答 2
2回答

慕妹3242003

请参阅此问题的答案:使用 maven 构建一个胖罐。您需要使用 maven 程序集插件来创建所谓的 fat/uber jar。

海绵宝宝撒

启动应用程序时,您的类路径中需要 derby-10.8.3.0.jar。java -cp derby-10.8.3.0.jar;target/puzzle.game-0.0.1-SNAPSHOT.jar App类路径分隔符取决于操作系统。你可能需要调整它。正如 Bryan Pendleton 所提到的,您应该使用当前的 Derby 版本。<dependency>&nbsp; <groupId>org.apache.derby</groupId>&nbsp; <artifactId>derby</artifactId>&nbsp; <version>10.14.2.0</version></dependency>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java