找不到适合 jdbc:sqlite 的驱动程序
Posted
技术标签:
【中文标题】找不到适合 jdbc:sqlite 的驱动程序【英文标题】:No suitable driver found for jdbc:sqlite 【发布时间】:2021-03-26 14:19:02 【问题描述】:我无法连接到我的 SQLite 数据库。在我的 Windows PC 上一切正常,但如果我想在 Linux(Raspberry PI) 上运行我的程序,则会出现标题所示的错误。
这是我在 Windows 上的连接:
public static final String DB_NAME = "settings.db";
public static final String CONNECTION_STRING = "jdbc:sqlite:C:\\Users\\oschr\\eclipse-workspace\\Dippmitteldosierer\\src\\" + DB_NAME;
在我为 Linux 导出我的程序之前,我更改了我的连接字符串:
public static final String CONNECTION_STRING = "jdbc:sqlite:/home/pi/Desktop/" + DB_NAME;
如果没有数据库,我使用以下代码创建它:
String url = CONNECTION_STRING;
try
try
Class.forName("org.sqlite.JDBC");
catch (ClassNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();
connection = DriverManager.getConnection(url);
statement = connection.createStatement();
statement.execute("CREATE TABLE IF NOT EXISTS " + TABLE_VORWAHLMENGEN + "( " + COLUMN_VORWAHLNAME + " TEXT, " + COLUMN_VORWAHLMENGE + " INTEGER)");
statement.execute("CREATE TABLE IF NOT EXISTS " + TABLE_KALIBRIERUNGEN + "( " + COLUMN_KALIBRIERUNGNAME + " TEXT, " + COLUMN_KALIBRIERUNGMENGE + " INTEGER)");
这是我的构建路径:
这是我的项目:
有人可以帮帮我吗?
【问题讨论】:
你也收到ClassNotFoundException
吗?
【参考方案1】:
您正在使用一些您没有在问题中解释的过程来制作罐子。然后你将这个 jar 发送到 pi 并在那里运行它。
您正在使用的过程只是将您的代码变成一个罐子。它不包括您的所有依赖项;这通常不会这样做,因为它会使 jar 变得巨大,并使更新变得复杂。
选项 1:带有类路径条目的可执行 jars
您需要最终得到一个 jar,该 jar 在清单中列出了 jdbc-sqlite.jar
的 Class-Path
条目,然后确保此 jar 在与 yourapp.jar
的“兄弟”相同的目录中可用。如何?嗯,这取决于将您的类文件转换为 jar 文件的过程。
选项 2:不要使用 java -jar
运行它。
如果您在那里运行java -jar sqlite.jar:yourapp.jar com.foo.YourMainClass
,您可以手动执行上述操作。
选项 3:条带化
更新该进程,以便将 dep(s) 条带化到一个巨大的一切 jar 中。通常,您需要一个构建系统,例如 maven 或 gradle 来执行此操作。
【讨论】:
我不知道如何执行选项 1。我必须将 sqlite.jar 放在包含我的应用程序的文件夹中吗?我如何编写 Class-Path 条目?选项 2 不起作用,它给出了错误:无法访问 jarfile sqlite.jar:myapp.jar 我不能用 Eclipse 自动执行此操作吗?或者如果eclipse没有这个功能我应该使用Intellij? 选项 2:微不足道,因为您不需要更改任何内容。其余的:是的,但是,“使用 IDE 构建”不是推荐的方法;相反,有一个构建(基于 maven 或 gradle)。然后 Eclipse 可以将您的项目视为 maven 项目没有问题。 在 Eclipse 中,右键单击您的项目,导出... -> 可运行的 jar 文件 -> '库处理:将所需的库提取到生成的 jar' 将为您提供类似于选项 #3 的内容。跨度> 如果我将所需的库提取到生成的 jar 中并尝试在 Rasberry Pi 上启动我的应用程序,我会收到错误:无效或损坏的 jarfile Myapp.jar。抱歉,我对maven一无所知。为什么我的应用程序在 Windows 上运行没有问题,但在 Linux 上却没有......?!?以上是关于找不到适合 jdbc:sqlite 的驱动程序的主要内容,如果未能解决你的问题,请参考以下文章
如何修复:找不到适合 jdbc:sqlserver 的驱动程序 [重复]
找不到适合'jdbc:mysql:// localhost:3306 / mysql的驱动程序[重复]
SQLException: 找不到适合 jdbc:postgresql 的驱动程序