我試圖運行Java應用程序,但收到此錯誤:如何解決ClassNotFoundException?
java.lang.ClassNotFoundException:
冒號後面就是一個缺少的類的位置。然而,我知道那個地方並不存在,因爲這個地方是其他地方。我如何更新該類的路徑?它與班級路徑有什麼關係?
我試圖運行Java應用程序,但收到此錯誤:如何解決ClassNotFoundException?
java.lang.ClassNotFoundException:
冒號後面就是一個缺少的類的位置。然而,我知道那個地方並不存在,因爲這個地方是其他地方。我如何更新該類的路徑?它與班級路徑有什麼關係?
你的類路徑被破壞(這是在Java世界中一個非常常見問題)。
根據您啓動應用程序的方式,您需要將參數修改爲-cp
,MANIFEST.MF中的Class-Path條目或磁盤佈局。
您可以請更具體的日食?我需要做什麼? – user2426316
您的問題未包含足夠的信息以提供更具體的答案。考慮添加。 –
如果您知道類或包含該類的jar的路徑,請在運行時將其添加到類路徑中。您可以使用類路徑這裏提到:
在Windows
java -classpath .;yourjar.jar YourMainClass
在UNIX/Linux
java -classpath .:yourjar.jar YourMainClass
回到頂端並刪除導入語句(如果有),然後重新導入該類。但如果情況並非如此,那就乾淨整潔吧。你在使用Netbeans還是Eclipse?
要通過命令行將類的位置添加到類路徑中,只需在運行時添加-cp
或-classpath
以及該類的位置。 I.E.
java -cp "c:/location/of/file" YourProgram
或者,如果你正在運行的IDE,比如Eclipse,你可以右鍵點擊project -> build path -> configure build path
並添加包含類的構建路徑,那麼它應該工作良好的外部JAR。
類路徑是從中加載類的位置的列表。
這些位置可以是目錄或jar文件。
對於目錄,JVM將按照預期的模式加載一個類。如果我在我的類路徑中有目錄C:/ myproject/classes,並且我嘗試加載類com.mycompany.Foo,它將在類目錄下查找名爲com的目錄,然後在該目錄下一個名爲mycompany的目錄,最後它將在該目錄中尋找名爲Foo.class的文件。
在第二個實例中,對於jar文件,它將搜索該類的jar文件。實際上,jar文件只是上面的一個壓縮目錄集合。如果你解壓縮一個jar文件,你會得到一堆目錄和類文件,遵循上面的模式。
因此,當JVM嘗試加載類定義時,它從頭到尾遍歷一個類路徑,以查找該類的定義。例如,在類路徑:
C:/ myproject的/類; C:/myproject/lib/stuff.jar; C:/myproject/lib/otherstuff.jar
的JVM將試圖在尋找目錄類先,然後在stuff.jar,最後在otherstuff.jar。
當您遇到ClassNotFoundException時,表示JVM已遍歷整個類路徑,但找不到您嘗試引用的類。 Java解決方案常常是在Java世界中檢查你的類路徑。
你可以在命令行上定義一個類路徑,通過說java -cp然後你的類路徑。在Eclipse等IDE中,您將有一個菜單選項來指定您的類路徑。
我遇到了這個問題,並嘗試了所有其他解決方案。我的HTML文件夾中沒有.class文件,我只有.java文件。一旦我添加.class文件,程序運行良好。
,如果你的類路徑是不正確的
讓我們斷定在相同的項目名稱序列化類和deserializable類這可能發生。您運行可序列化的類,在特定文件夾中創建可序列化的對象。現在你需要無證的數據。同時,如果您更改項目名稱,則無法使用。您必須先運行可序列化的類,然後反序列化文件。
使用';'作爲分隔符。如果你的環境變量設置正確,你應該看到你的設置。如果您的PATH和CLASSPATH正確,那麼Windows應該識別這些命令。安裝Java時不需要重新啓動計算機。
這是在Windows(分號)上,在Unix/Linux上它是':'(冒號) – Joeblade
放入try塊,然後趕上之外,所有的代碼在catch塊
try
{
// code
}
catch(ClassNotFoundException e1)
{
e1.getmessage();
}
這不能解決異常。這隱藏了例外。此外,「e1.getmessage()」是a)getMessage()和b)的大寫字母不正確,因爲它返回一個帶有消息的字符串,而您並未打印它或記錄它或任何東西! – IBBoard
我用maven爲我的項目,當我做mvn clean install
並嘗試運行一個程序,它拋出異常。所以,我清理了這個項目並重新運行它,它對我很有用。
我使用Eclipse IDE。
爲:
Class Not Found Exception when running Junit test
嘗試運行mvn clean test
一旦將編譯所有的測試類(爲我工作)。
這是我到目前爲止發現的best solution。
假設我們有一個包叫做org.mypackage
含有類:
,並確定這個包中的文件物理下保存目錄D:\myprogram
(在Windows上)或/home/user/myprogram
(在Linux上)。
當我們調用Java,我們指定運行應用程序的名稱:org.mypackage.HelloWorld
。但是,我們還必須告訴Java在哪裏查找定義我們軟件包的文件和目錄。因此,要啓動該程序,我們必須使用下面的命令:
NOTE: You have to execute the above
java
command no matter what your current location is. But this is not the case forjavac
. For compiling you can even directly go into the directory where you have your.java
files and directly executejavac ClassName.java
.
添加jar文件的完整路徑到CLASSPATH。在linux下使用:export CLASSPATH=".:/full/path/to/file.jar:$CLASSPATH"
。其他方式工作(不編輯CLASSPATH)解壓縮當前項目文件夾中的jar。
方式並沒有爲我工作:
1)使用-cp
選項以jar文件的完整路徑。
2)使用-cp
與位於當前文件夾
3時罐的唯一名稱)複製罐子當前項目文件夾
4)複製的jar到Java罐的標準位置(在/ usr/share/java目錄)
該解決方案報告了使用mysql-connector-java.5類com.mysql.jdbc.Driver - *罐子,在Linux上正與OpenJDK的1.7版
只解壓縮JAR爲我工作,沒有其他解決方案 – OverCoder
如果您使用的是maven ,請嘗試更新所有項目並強制創建快照。 它將清除以及重建和所有的classpath .. 它解決了我的問題..
我試圖使用Process
類C#代碼運行的.jar。 java代碼從eclipse中成功運行,但它不是從C#visual studio中直接點擊jar文件,它總是以ClassNotFoundException:
異常停止。我的解決方案是將java程序導出爲「Runnable JAR文件」而不是「JAR文件」。希望它可以幫助某人。
我只是做了
1.Invalidate緩存和重新啓動
2. 重建我的項目這解決了這個問題
您必須添加其中有缺少類的classptah – Crom
如果jar你的班有一個包,然後去包含該類的文件夾。即g如果包是包test.abc,則在測試前轉到文件夾,然後執行java -cp。 test.abc.CLASSNAME(不含.class)。 如果沒有包,則轉到包含類的文件夾並說java -cp。 CLASSNAME – Optional
任何一個類未被部署到您的運行時(例如缺少jar),或者該類在給定的類加載器中不可見,請檢查此工具以幫助解決這些問題:http://jhades.org –