未找到主要 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
.
语言: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
.