2009-11-07 143 views
0

所以我需要編寫一個程序來訪問和修改一個學校程序的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都在同一個文件夾中,所以他們應該找到對方。有沒有人知道我做錯了什麼?

回答

1

正如異常消息所說,問題在於它無法找到類Test。所以問題不是找到SQLite,而是找到你的Test類。

只是猜測,但我想知道如何編譯你的問題。在Test.java中,類是否屬於一個包?如果是這樣,您需要使用-d標誌對其進行編譯,以便將其放入相應的子目錄中。

4

根據java.lang.NoClassDefFoundError: Test,在CLASSPATH中找不到Test類。但是你寫了Test.class在當前目錄中可用,所以我會猜測一些東西。實際上,我認爲你沒有使用正確的CLASSPATH分隔符(取決於平臺),因此不能正確構建CLASSPATH。在Windows上,您應該使用;而不是:。如果發生這種情況是這種情況,你應該試試這個:

java -cp .;sqlitejdbc-v056.jar Test 

如果你是一個類Unix平臺,忘了這個答案,問題是其他地方。

+1

良好的分析。類路徑非常棘手。 – 2009-11-07 10:44:54

+0

非常感謝你解決了我的問題,非常感謝。 只是想知道,雖然,這是什麼它們之間的區別:。 java命令; sqlitejdbc-v056.jar測試 java命令; sqlitejdbc-v056.jar的Test.class 因爲當我把 「.class」 的最後,我得到錯誤。 謝謝。 – ManBeast 2009-11-07 17:23:21

+0

非常感謝你解決了我的問題,非常感謝。只是想知道,這兩個命令之間有什麼區別:「java -cp。; sqlitejdbc-v056.jar Test」然後是「java -cp。; sqlitejdbc-v056.jar Test.class」因爲當我把「 .class「結尾,我得到錯誤。謝謝 – ManBeast 2009-11-07 17:24:24

相關問題