【问题标题】:SQLite Class Not Found Exception - Maven Project using TomcatSQLite Class Not Found 异常 - 使用 Tomcat 的 Maven 项目
【发布时间】:2017-03-16 16:54:12
【问题描述】:

我正在尝试将数据库实现到 Maven 项目中。我决定使用 SQLite,我让它在一个单独的程序中工作,所以认为将它集成到这个项目中应该没问题。

我得到了异常

java.lang.ClassNotFoundException: org.sqlite.JDBC

上线

Class.forName("org.sqlite.JDBC");

所有的东西都在网上和这里谈论添加 jar 文件,但我确信我已经正确添加了它,它在同一个项目的 eclipse 中我引用的库中。以与我在它所从事的项目上相同的方式完成。

我将发布正在发生的课程,希望有人可以提供帮助。我认为发布其他课程没有任何意义吗?

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import Assignment.rest.model.CD;
public class CDRepositoryStub implements CDRepository {
    private static Connection con;

    private void getConnection() throws ClassNotFoundException, SQLException {
        Class.forName("org.sqlite.JDBC");
        con = DriverManager.getConnection("jdbc:sqlite:C:\\Users\\Mick\\Desktop\\Year 4\\New folder (2)\\restDatabase.sqlite");
    }

    @Override
    public void create(CD cd) {
        // TODO Auto-generated method stub
        //should issue a insert statement to the db
        try {
            if (con == null) {
                getConnection();
            }
            PreparedStatement prep = con.prepareStatement("INSERT INTO data values(?,?,?,?);");
            prep.setString(1, cd.getId());
            prep.setString(2, cd.getTitle());
            prep.setInt(3, cd.getDuration());
            prep.setString(4, cd.getArtistName());

            prep.execute();
        } catch (Exception e) {
            System.out.println("Exception caught " + e);
        }
    }
}

谢谢

【问题讨论】:

  • Maven 默认情况下不会在内置工件中打包依赖项。你必须用assembly-plugin 或类似的东西明确提到这一点。如果是 webapp,可以将驱动 jar 复制到容器的 lib 目录下。但是,附加完整的 pom 会有所帮助

标签: java database sqlite maven tomcat


【解决方案1】:

检查你的依赖不包含以下语句

<scope>test</scope>

默认设置在相应的maven仓库中。

【讨论】:

    【解决方案2】:

    发现您不会在 Maven 中添加相同的 jar,而是将其作为依赖项添加到 pom.xml 文件中。对于任何想要这样做的人,代码是

    <dependency>
      <groupId>org.xerial</groupId>
      <artifactId>sqlite-jdbc</artifactId>
      <version>3.16.1</version>
    </dependency>
    

    还了解到 SQLite 不是与 Maven 结合使用的理想数据库,尽管它适用于小型项目等。

    【讨论】:

      【解决方案3】:

      我的解决方案:我运行mvn compile,发现sqlite-jdbc-[version].jar 文件的标题不对,这意味着文件已损坏,在网络上搜索后我强制rm .m2 中的所有目录/repository 并再次运行mvn compile,然后它就编译成功了。 希望能帮助被同样不寻常的问题困扰了这么久的人。

      【讨论】:

        猜你喜欢
        • 2018-08-22
        • 1970-01-01
        • 2013-03-01
        • 1970-01-01
        • 2018-10-10
        • 2018-12-09
        • 1970-01-01
        • 1970-01-01
        • 2021-01-25
        相关资源
        最近更新 更多