簡體   English   中英

為什么我收到NoClassDefFoundError / ClassNotFoundException

[英]Why am I getting NoClassDefFoundError / ClassNotFoundException

我一直在相應地遵循本教程

由於某種原因,它開始運行之前,直到在命令提示符下運行FirstExample類為止。 嘗試運行以下命令后:

java FirstExample

我得到以下異常:

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

我知道由於類路徑(由於某種原因)找不到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

這使我感到困惑,因為對於初學者來說,我通過Eclipse運行了完全相同的編碼,並且按預期運行

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

Eclipse構建路徑

為了使您能夠使用命令行工具中的第三方庫來執行項目,您應該在類路徑中手動指定庫:

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

根據您的評論:

MySQL文件的路徑是:C:\\ Program Files \\ MySQL \\ mysql-connector-java-3.1.14 \\ mysql-connector-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

您還需要在類路徑中有com.mysql.jdbc.Driver類(以及所有導入的類)。

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

使用下一個示例將罐子添加到類路徑:

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

當您在Class.forName()中編寫的類名出現問題時,或者如果未將包設置為classpath變量,則將引發ClassNotFound異常。 確保已將jar文件添加到類路徑(C:....... \\ jarfilename.jar;)。 這適用於任何JDBC驅動程序和jar文件。 添加到類路徑的.jar文件對IDE不可見,在這種情況下,您需要將jar文件添加到buildpath(在eclipse中),或者也可以將jar文件復制到Java安裝中可用的ext文件夾中。夾。

還要注意,數據庫軟件的jar文件可能會根據所使用的數據庫軟件版本而有所不同,例如,如果您使用的是Oracle 11g,則需要ojdbc6.jar文件,而在其他版本的Oracle中,數字會發生變化,例如ojdbc14。罐子等

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM