无法加载SQLite JDBC驱动程序,任何想法?
问题描述:
所以我需要编写一个程序来访问和修改一个学校程序的SQLite数据库,并首先查看基础知识。现在,我正在看这个让我开始:link text。问题是,当我编译Test.java(网站上的示例代码),然后运行命令:无法加载SQLite JDBC驱动程序,任何想法?
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都在同一个文件夹中,所以他们应该找到对方。有没有人知道我做错了什么?
答
正如异常消息所说,问题在于它无法找到类Test。所以问题不是找到SQLite,而是找到你的Test类。
只是猜测,但我想知道如何编译你的问题。在Test.java中,类是否属于一个包?如果是这样,您需要使用-d标志对其进行编译,以便将其放入相应的子目录中。
答
根据java.lang.NoClassDefFoundError: Test
,在CLASSPATH中找不到Test
类。但是你写了Test.class
在当前目录中可用,所以我会猜测一些东西。实际上,我认为你没有使用正确的CLASSPATH分隔符(取决于平台),因此不能正确构建CLASSPATH。在Windows上,您应该使用;
而不是:
。如果发生这种情况是这种情况,你应该试试这个:
java -cp .;sqlitejdbc-v056.jar Test
如果你是一个类Unix平台,忘了这个答案,问题是其他地方。
良好的分析。类路径非常棘手。 – 2009-11-07 10:44:54
非常感谢你解决了我的问题,非常感谢。 只是想知道,虽然,这是什么它们之间的区别:。 java命令; sqlitejdbc-v056.jar测试 java命令; sqlitejdbc-v056.jar的Test.class 因为当我把 “.class” 的最后,我得到错误。 谢谢。 – ManBeast 2009-11-07 17:23:21
非常感谢你解决了我的问题,非常感谢。只是想知道,这两个命令之间有什么区别:“java -cp。; sqlitejdbc-v056.jar Test”然后是“java -cp。; sqlitejdbc-v056.jar Test.class”因为当我把“ .class“结尾,我得到错误。谢谢 – ManBeast 2009-11-07 17:24:24