2014-05-20 62 views
0

我一直在跟隨this tutorial爲什麼我得到NoClassDefFoundError/ClassNotFoundException

在命令提示符下運行FirstExample類時,由於某種原因開始出現異常。

java FirstExample 

我得到下面的異常:嘗試運行以下命令後

Exception in thread "main" java.lang.NoClassDefFoundError: FirstExample 

我明白,它無法找到由於classpath中FirstExample類(出於某種原因),所以我執行以下命令:

java -cp . FirstExample 

而現在它返回一個新的異常:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 

現在找不到JDBC驅動程序。這讓我感到困惑,因爲對於初學者來說,我通過Eclipse運行完全相同的代碼,並且按預期工作,其次,我儘可能確保執行與Eclipse執行相同的類文件,並且命令提示符仍然會返回異常。我還儘可能將FirstExample文件放在一個單獨的文件夾中,僅用於將MySQL連接器複製並粘貼到同一文件夾中,而且我仍然會遇到異常。

我只是不明白是怎麼回事,有人可以幫我嗎?

非常感謝。


的文件路徑連接器如下:

C:\Program Files\MySQL\mysql-connector-java-3.1.14\mysql-connector-java-3.1.14-bin.jar 

希望這有助於。


出於測試目的,我把下面的路徑下的FirstExample類:

C:\java 
+0

你的類路徑中是否有像ojdbc14.jar這樣的jar文件?如果不是爲了測試目的,您可以將此jar放在類文件所在的同一位置,然後重試。 –

回答

1

這讓我困惑,因爲對於初學者來說,我通過Eclipse的運行完全相同的代碼和它的作品如預期

這是因爲在Eclipse中添加庫到構建路徑,它將使用運行項目時,會自動在類路徑中指定的所有庫。這可以在這裏指出:

Eclipse Build Path

爲了讓您在使用第三方庫的命令行工具,執行你的項目,你應該在你的classpath中明確手動指定庫:

java -cp <path/to/mysql_jar/goes/here>:. FirstExample 

通過您的評論:

的路徑MySQL的文件:C: \ Program Files文件\的MySQL \ MySQL的連接器的Java-3.1.14 \ mysql的連接器的Java-3.1.14-bin.jar(...)我已經放在FirstExample類在C:\ java中

這應該是在命令行中使用:

java -cp "C:\Program Files\MySQL\mysql-connector-java-3.1.14\mysql-connector-java-3.1.14-bin.jar; ." FirstExample 

請注意,這是更好地保存你的項目,通常被稱爲LIB內的所有單個文件夾中的第三方庫,並把一個參考那裏。假設你的當前文件夾中有一個lib文件夾,所有的第三方庫被複制那裏,命令行是:

java -cp "lib\*; ." FirstExample 
+0

感謝您的及時回覆; MySQL文件的路徑是:'C:\ Program Files \ MySQL \ mysql-connector-java-3.1.14 \ mysql-connector-java-3.1.14-bin.jar'。我試過這個命令沒有成功,但是我可能輸入錯誤。你能澄清一下我將如何去命令提示符中指定庫嗎?非常感謝。 – Kurtiss

+0

也出於測試目的,我已將FirstExample類放在'C:\ java'下。 – Kurtiss

+0

@KurtissBolam答案已更新。 –

0

你需要有類com.mysql.jdbc.Driver(以及所有進口類)中類路徑也是如此。

您應該下載jar(http://dev.mysql.com/downloads/connector/j/5.0.html)並將其添加到類路徑中。

+0

你想暗示只是把jar放在同一個目錄中就會把它放在類路徑上? – Gimby

+0

不,這不是我想說的......但這就是我所說的。我要編輯。 – luanjot

+0

謝謝你的回覆;是的,我已經下載了Connector/J,因爲這個問題依然存在,所以在本教程中已經介紹過了。再次感謝您的回覆。 – Kurtiss

0

使用下面的例子來你的jar添加到classpath:

java -cp "jdbc.jar;lib/*" my.package.FirstExample 
0

如果在Class.forName()中寫入的類名存在問題,或者包未設置爲classpath變量,則ClassNotFound異常會上升。確保已經將jar文件添加到類路徑(C:............ \ jarfilename.jar;)。 這適用於任何JDBC驅動程序和jar文件。添加到類路徑中的.jar文件對IDE來說是不可見的,在這種情況下,您需要將jar文件添加到buildpath中(在eclipse中),或者也可以將jar文件複製到Java安裝中提供的ext文件夾夾。

還要注意的是DB軟件的jar文件可能會因您正在使用,例如,如果您正在使用的Oracle 11g數據庫軟件版本,你需要ojdbc6.jar文件,在Oracle的一些其他版本像ojdbc14.jar等變化

+0

感謝您的及時回覆。我已經在系統的環境變量設置下檢查了CLASSPATH,它如下所示:'C:\ Program Files \ MySQL \ mysql-connector-java-3.1.14 \ mysql-connector-java-3.1.14-bin.jar' 。再次感謝您的回覆。 – Kurtiss