所以我在eclipse中設定了一個基本的hello world,我可以使用cmd輕松編譯它(我已經設定了所有必要的路徑),但是當我嘗試使用java命令執行hello world時,它總是回傳相同的錯誤: 錯誤:無法找到或加載主類 helloWorld 原因:java.lang.NoClassDefFoundError:net/codejava/helloWorld(錯誤名稱:helloWorld)
這是使用的代碼:
package net.codejava;
public class helloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
我在正確的目錄中 cd(我想,我 cd 進入 src 目錄,然后進入存盤在 src 中的包檔案)并且正在使用帶有 java 18.0.1 和 JRE build 18.0.1 10-24 的 Windows 10
任何幫助將不勝感激,因為當代碼在 Eclipse 控制臺上毫不費力地運行時,這非常令人沮喪。謝謝。
uj5u.com熱心網友回復:
你的檔案有一個“包”net.codejava和一個名稱helloWorld,意思是這個類的全名是net.codejava.helloWorld。
該java命令,至少在您使用它的方式上,要求您傳遞全名,因此,您必須運行java net.codejava.helloWorld. 只是java helloWorld根本行不通。
但這還不是全部。
然后 Java 需要找到包含 class 代碼的類檔案net.codejava.helloWorld。它通過首先將該全名轉換為各種路徑來做到這一點:net/codejava/helloWorld.class,然后它將掃描類路徑中的每個條目。您可以將目錄和 jar 檔案放在類路徑上。
因此,您的系統上有一個目錄;我們稱這個目錄為 X。X 包含一個名為 的目錄net,該目錄包含一個名為 的目錄,該目錄包含一個名為codejava的檔案helloWorld.class。如果沒有這樣的 X(例如,你的類檔案不在一個名為的目錄codejava中),你將不得不通過創建這些目錄來解決這個問題。
然后,X(而不是 codejava 目錄!)需要在類路徑上。通常(這取決于您如何配置),“當前目錄”默認位于類路徑上。
假設您的代碼在,比如說,/home/PythonSux/workspace/learningjava/net/codejava/helloWorld.class這意味著需要在類路徑上的目錄是/home/PythonSux/workspace/learningjava. 畢竟,如果你從那里尋找net/codejava/helloWorld.class,你會找到正確的檔案。
因此,要么cd到那個目錄,要么運行java -cp /home/PythonSux/workspace/learningjava net.codejava.helloWorld
請注意,這通常不是您實際運行 Java 應用程式的方式。您可以從 IDE 運行它們,或者要求構建工具運行它,或者將 Java 應用程式打包到 jar 檔案中并運行,等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/467108.html
上一篇:SWT在不同版本的java上運行
