未找到主要 class

No main class found

语言:Java

程序: 连接到数据库

问题:我正在尝试按照 TutorialsPoint tutorial 连接 sqlite 数据库,但我一直收到 class 未找到的主要错误。

实现:下面是我的代码,后面是我的终端命令和文件夹结构截图。但基本上我所有的文件都位于一个文件夹中,包括 sqlite jar 文件。

import java.sql.*;

public class Test {
 public static void main(String[] args) {

 Connection c = null;

 try{
   Class.forName("com.sqlite.JDBC");
   c = DriverManager.getConnection("jdbc:sqlite:test.db");
 } catch(Exception e) {
   System.err.println(e.getClass().getName() + ": " + e.getMessage());
   System.exit(0);
 }

 System.out.println("Opened database successfully!");
 }
}

终端命令

javac Test.java
java -classpath ".;sqlite-jdbc-3.23.1.jar" Test

我的类路径选项不正确。我当时在 linux 并且正在尝试做:

java -classpath ".;sqlite-jdbc-3.23.1.jar" Test

正确的方法是

java -classpath ".:sqlite-jdbc-3.23.1.jar" Test

冒号不是分号。不幸的是现在它给了我错误” ClassNotFoundException: com.sqlite.JDBC;

我会调查的。 感谢帮助我找到错误的评论

您的问题是您明确尝试加载 class com.sqlite.JDBC,而 driver class 名称一定是在某个地方发生了变化。

JDBC 类型 4 driver 具有 added cleverness,它允许您仅指定连接 URL,并且 driver 根据开始(即 jdbc:sqlite)。不用想 driver class 的名字是什么了。


与当前问题无关的咆哮:

不幸的是,人们阅读的不是专家写的旧教程,所以我们经常看到 Class.forName() 被使用,以及更严重的问题,即使用 Statement 而不是 PreparedStatement.