从 JAR 运行时“找不到合适的驱动程序”[重复]

Posted

技术标签:

【中文标题】从 JAR 运行时“找不到合适的驱动程序”[重复]【英文标题】:"No suitable driver found" when running from JAR [duplicate] 【发布时间】:2016-10-01 14:56:51 【问题描述】:

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

在 NetBeans 中一切正常,但每当我从 JAR 文件(这最终是我需要交给客户的文件)访问它时,它不会向数据库发布任何内容。实际上它返回以下错误:

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 文件放在该文件夹中,并将依赖项(用于所需的组件(如 UCanAccess、Jackcess、HSQLDB 和 Apache Commons 位)放入名为 lib 的子文件夹中。您需要确保将lib 文件夹复制到目标计算机并放置在与主JAR 文件相同的文件夹中。详情请看here。 谢谢!除了您的建议之外,我还在 NetBeans 中的 Libraries 下添加了所有 Jar 文件。我的程序现在功能齐全了,非常感谢!! 【参考方案1】:

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

【讨论】:

【参考方案2】:

您可以采用 fat-jar 方法。 如果你使用ant,你可以看到它here。

如果有一个 maven 项目,你可以使用 this 插件来创建一个 fat-jar

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

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

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

你在你的代码中。

【讨论】:

以上是关于从 JAR 运行时“找不到合适的驱动程序”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java MySQL连接不起作用:找不到合适的驱动程序[重复]

使用 JDBC 连接到 Athena 时找不到合适的驱动程序

如何修复:找不到适合 jdbc:sqlserver 的驱动程序 [重复]

除非使用完整路径,否则找不到合适的驱动程序

玩! + Tomcat:找不到合适的驱动程序 sqlserver

在 java 中与 MS Access 数据库建立 SQL 连接时找不到合适的驱动程序