使用 Maven 连接到内存中 SQLite 的 java 应用程序未找到适合 "jdbc:sqlite:myDB.sqlite" 的驱动程序

No suitable driver found for "jdbc:sqlite:myDB.sqlite" with java application using maven to connect to in-memory SQLite

我正在尝试编写一个 java 应用程序以使用 maven.I 将 SQLite 依赖项添加到 pom.xml 文件来连接到内存中的 sqlite 数据库。当我 运行 程序出现错误时:

"java.lang.ClassNotFoundException: org.sqlite.JDBC" and "No suitable driver found for jdbc:sqlite:myDB.sqlite".

如果我遗漏了什么,请告诉我。谢谢!

public class Application {

  public static void main(String[] args) throws  ClassNotFoundException{
    System.out.println("Application class created\n");
    Connection connection = null;
    try {
        Class.forName("org.sqlite.JDBC");
    }catch (ClassNotFoundException e){
        System.err.println("Class not found"+e);
    }
    try{
        connection = DriverManager.getConnection("jdbc:sqlite::memory:");
        Statement statement = connection.createStatement();
        statement.setQueryTimeout(33);
        statement.executeUpdate("create table demo (id integer, name string)");
        statement.executeUpdate("insert into demo(1, 'A')");
        ResultSet mySet = statement.executeQuery("select * from demo");
        while(mySet.next()){
            System.out.println("Name is : "+mySet.getString("name"));
            System.out.println("Id is : "+mySet.getInt("id"));
        }

    }
    catch (SQLException sqlException){
        System.err.println(sqlException.getMessage());

    }
    finally {
        try{
            if(connection!=null)
                connection.close();
        }
        catch (SQLException sqlException){
            System.err.println(sqlException);
        }
    }
}
}

我的 POM 文件依赖是:

  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
<dependencies>
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>3.23.1</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>path-to-mainclass-Application</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

删除 maven-jar-plugin

并使用此插件生成包含所有依赖项的 jar,以及 运行 带有依赖项的 jar

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>
                            your.main.Class
                        </mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </execution>
    </executions>
</plugin>