所以我需要编写一个程序来访问和修改学校程序的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都在同一个文件夹中,所以他们应该找到对方。有没有人知道我做错了什么?
答案 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标志对其进行编译,以便将其放入相应的子目录中。