"No suitable driver found" 当 运行 来自 JAR

"No suitable driver found" when running from JAR

我开发了一个小游戏,其中用户输入的文本需要在 MS Access 数据库中 posted。

它在 NetBeans 中一切正常,但每当我从 JAR 文件访问它时(这最终是我需要交给我的客户的),它不会 post 任何数据库。事实上它 returns 出现以下错误:

java.sql.SQLException: No suitable driver found for jdbc:ucanaccess://C:\Users\Paul\Desktop\Spelli\RispostiDB.mdb

这是相关代码:

public void postAnsDB()
    {
       String tableName = "Form"+studentGroup +"_"+studentSurname+"_"+studentName+"";

       answerModifier();

       try{

                String strurl="jdbc:ucanaccess://C:\Users\Paul\Desktop\Spelli\RispostiDB.mdb";
                Connection conn=DriverManager.getConnection(strurl, "", "");
                Statement stmt=conn.createStatement();

                //Post Student Details to DB 

                String post = "INSERT INTO "+tableName+"(ID, responses, Correct_Response, Valid_Invalid, Marks) VALUES ('"+ansID+"', '"+answer+"', '"+correct+"', '"+valid+"', '"+marks+"');";

                stmt.executeUpdate(post);
            }
        catch(Exception e)
        {
            System.out.println("Exception found in postAnsDB: "+e);
        }
    }

当您在 NetBeans 中构建项目时,它会在项目的主文件夹中创建一个 dist 文件夹,将代码的 JAR 文件放在该文件夹中,并且还将依赖项(所需的 JAR 文件UCanAccess、Jackcess、HSQLDB 和 Apache Commons 位等组件)放入名为 lib 的子文件夹中。您需要确保 lib 文件夹被复制到目标机器并与您的主 JAR 文件放在同一文件夹中。详情请查看 here

您可以采用胖罐方法。 用ant就可以看到

如果有 Maven 项目,您可以使用 插件来创建 fat-jar

fat-jar 应用程序的好处是您可以将所有内容都放在一个 jar 中,而不必像另一个答案中提到的那样担心 lib 目录。

还要小心硬编码路径,例如:

String strurl="jdbc:ucanaccess://C:\Users\Paul\Desktop\Spelli\RispostiDB.mdb";

您的代码中有。