从 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 的驱动程序 [重复]