找不到主班

时间:2018-08-21 19:38:02

标签: java sqlite mainclass

语言:Java

程序:连接到数据库

问题:我正在尝试通过遵循TutorialsPoint tutorial连接sqlite数据库,但始终收到找不到主类的错误。

实施:我的代码如下,其后是我的终端命令和文件夹结构屏幕截图。但是基本上我所有的文件都位于一个文件夹中,包括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

enter image description here

2 个答案:

答案 0 :(得分:1)

您的问题是,您正在明确尝试加载类com.sqlite.JDBC,而驱动程序类名称在此过程中一定已更改。

JDBC Type 4驱动程序具有added cleverness,该驱动程序允许您仅指定连接URL,并且该驱动程序根据开头(即jdbc:sqlite)进行加载。无需怀疑驱动程序类的名称是什么。


Rant与当前问题无关:

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

答案 1 :(得分:0)

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

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

正确的方法是

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

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

我将对此进行调查。 感谢您提供的帮助我发现错误的评论