无法加载SQLite JDBC驱动程序,任何想法?

时间:2009-11-07 05:22:26

标签: java sqlite jdbc

所以我需要编写一个程序来访问和修改学校程序的SQLite数据库,并首先查看基础知识。现在,我正在考虑让我开始:link text。问题是,当我编译Test.java(网站上的示例代码)然后运行命令:

java -cp .:sqlitejdbc-v056.jar Test 
像它告诉我的那样,我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: Test
Caused by: java.lang.ClassNotFoundException: Test
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: Test.  Program will exit.

Test.java,Test.class和sqlitejdbc-v056.jar都在同一个文件夹中,所以他们应该找到对方。有没有人知道我做错了什么?

2 个答案:

答案 0 :(得分:4)

根据java.lang.NoClassDefFoundError: Test,在CLASSPATH中找不到Test类。但你写道当前目录中有Test.class可用,所以我猜错了。实际上,我认为您没有使用正确的CLASSPATH分隔符(与平台相关),因此无法正确构建CLASSPATH。在Windows上,您应该使用;而不是:。如果情况确实如此,你应该试试这个:

java -cp .;sqlitejdbc-v056.jar Test

如果您使用的是类似unix的平台,请忘记这个答案,问题出在其他地方。

答案 1 :(得分:1)

正如异常消息所说,问题在于它无法找到类Test。所以问题不是找到SQLite,而是找到你的Test类。

只是一个猜测,但我想知道你是如何编译的。在Test.java中,该类是否属于一个包?如果是这样,您需要使用-d标志对其进行编译,以便将其放入相应的子目录中。