我正在尝试将数据库实现到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);
}
}
}
谢谢
检查您的依赖项是否不包含以下语句
<scope>test</scope>
在相应的 maven 存储库中默认设置。
发现您没有在 Maven 中添加相同的 jar,而是将其作为依赖项添加到 pom.xml 文件中。 对于任何希望这样做的人来说,代码是
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.16.1</version>
</dependency>
还了解到SQLite不是与Maven结合使用的理想数据库,尽管它适用于小型项目等。
我的解决方案:我运行mvn compile
,发现sqlite-jdbc-[version].jar文件的标头不正确,这意味着文件已损坏,在网络上搜索后,我强制rm在我的.m2/repository中的所有目录并再次运行mvn compile
,然后它只是编译成功。希望能帮助那些被同一个不寻常的问题迷惑这么久的人。