0

我在连接到我的 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)");

这是我的构建路径:
这是我的构建路径

这是我的项目:
这是我的项目

有人可以帮我吗?

4

1 回答 1

0

您正在使用一些您在问题中未解释的过程来制作罐子。然后,您将这个 jar 运送到 pi 并在那里运行它。

您正在使用的过程只是将您的代码变成一个 jar。它不包括您的所有依赖项;通常不会这样做,因为它会使 jar 变得巨大,并使更新复杂化。

选项 1:带有类路径条目的可执行 jar

您需要最终得到一个 jar,该 jarClass-Path在清单中列出了一个条目jdbc-sqlite.jar,然后确保此 jar 在与 'sibling' to 相同的目录中可用yourapp.jar。如何?好吧,这取决于将类文件转换为 jar 文件的任何过程。

选项 2:不要使用java -jar来运行它。

如果您在那里运行,您可以手动完成上述操作java -jar sqlite.jar:yourapp.jar com.foo.YourMainClass

选项 3:条带化

更新该进程,以便将 dep(s) 条带化到一个巨大的一切 jar 中。通常,您需要一个构建系统,例如 maven 或 gradle 来执行此操作。

于 2021-03-26T14:53:08.313 回答