使用java命令執行class檔案提示“錯誤:找不到或無法載入主類“的問題分析
有時候我們需要直接用jdk提供的java命令來執行class檔案讓軟體執行起來,特別是很多初學者,但經常會發現如下提示:
用eclipse或用ant則沒有問題。
其實原因很簡單,我們忽略了2個細節。
1.java指令預設在尋找class檔案的地址是通過CLASSPATH環境變數中指定的目錄中尋找的。
2.我們忽略了package的影響。
第一個問題好解決:
我們直接在CLASSPATH環境變數中加入“.;”即可。“.”的意思是搜尋當前目錄
第二個問題看下面分析:
看下面兩個類
類A 類B
類A和類B的唯一差別就是沒有定義包名。
我們的工程路徑是D:\HelloWorld,在HelloWorld資料夾中建立一個src資料夾,類B的原始碼檔案就放在src中。用javac編譯完以後
會在src資料夾中生成NewsManager.class,如下
執行如下:
現在我們再把原始碼換成類A
為什麼加入了package後就不對了呢?
類A中package的路徑是org.will.app.main。按照java規定,我們應該按照package定義的路徑來存放原始檔,類A應該放入:
src\org\will\app\main下,如下:
然後我們編譯執行:
依然有問題,為什麼,其實大家再回去看看java的書籍就會發現,一個類的全名應該是包名+類名。類A的全名:org.will.app.main.NewsManager
好的,再試試:
還是不對。為什麼?
仔細看上面的圖,我們在main目錄下讓java命令去執行org.will.app.main.NewsManager,其實它會以為類的路徑是:
D:\HelloWorld\src\org\will\app\main\org\will\app\main\NewsManager,大家看到了吧,路徑重複了。
所以,我們應該這樣執行:
成功!
總結:
一、java執行class檔案是根據CLASSPATH指定的地方來找,不是我們理解當前目錄。如果希望它查詢當前目錄,需要在CLASSPATH中加入“.;”,代表當前目錄。
二、java執行class檔案對package的路徑是強依賴的。它在執行的時候會嚴格以當前使用者路徑為基礎,按照package指定的包路徑轉化為檔案路徑去搜索class檔案。各位同學以後注意就OK啦。至於網上說的要在CLASSPATH要加各種包等等都是泛泛而談,真正靜下心分析這個問題的資料不多。很多都沒有說到點子上,會誤導人的。
相關推薦
記一次使用cmd執行java檔案遇到的坑...包括“使用java命令執行class檔案提示“錯誤:找不到或無法載入主類“的問題”
今天寫了一個java檔案,類似聊天軟體的東西。在eclipse裡輸入輸出顯得沒感覺,於是乎就準備在cmd裡輸入和顯示輸出。如下圖,我準備執行的是ChatDemo.class檔案。路徑是:D:\workspace\Learn\bin\com\udp 。 然後我就開啟cmd,傻傻的輸入:cd D
使用java命令執行class檔案提示“錯誤:找不到或無法載入主類“的問題分析
有時候我們需要直接用jdk提供的java命令來執行class檔案讓軟體執行起來,特別是很多初學者,但經常會發現如下提示: 用eclipse或用ant則沒有問題。 其實原因很簡單,我們忽略了2個細節。 1.java指令預設在尋找class檔案的地址是通過CLASSPATH環境變數中指定的目錄中尋找的。 2.我
關於'java' 不是內部或外部命令,也不是可執行的程式 或批處理檔案 和 錯誤: 找不到或無法載入主類 helloworld的問題
一、前幾天電腦重灌了一次系統將java配置的環境變數都弄沒了,自己添加了兩個新的變數JAVA_HOME(自己jdk的地址)以及在path中新增%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 然後因為這幾天都是用eclipse進行程式設計的,沒有出現問題,今天用命令來測試,發現出現了
使用java命令執行class檔案
一、執行class檔案 執行帶main方法的class檔案,命令列為:java <CLA
關於命令列中javac 編譯成功,用 java 執行 class 檔案出現 “ 找不到或無法載入主類 ” 的問題
javac編譯成功,用java執行class檔案出現“找不到或無法載入主類”的問題所在 學習android,順便又學習下java. 在這裡推薦Mars老師的視訊,很好用,無論是Java4Android還是Android開發系列視訊教程都很好http://www.marschen.com/ 入門就遇到這樣的問
在命令列下編譯通過,執行時提示錯誤:找不到或無法載入主類的原因分析與解決方式
有時候我們需要直接用jdk提供的java命令來執行class檔案讓軟體執行起來,特別是很多初學者,但經常會發現如下提示: 用eclipse或用ant則沒有問題。 其實原因很簡單,我們忽略了2個細節。 1.java指令預設在尋找class檔案的地址是通過CLASSPATH環境變數中指定的目錄中尋找的。 2.
mac終端下執行java檔案報錯:找不到或無法載入主類
由面試題出來的 為了顯示 myStr = 23 這樣的結果,寫出在控制檯輸入的命令 public class MyClass { public static void main(String args[]) { String s1 = args[0]; String s2 = args[
Linux下Java執行.class檔案,報錯找不到或無法載入主類
classpath配置的錯誤,所以找不到.class檔案。 原先的etc/profile中的classpath配置 export CLASSPATH=$JAVA_HOME/lib/tools.jar 更改後的: export CLASSPATH=.:$JAVA_HOME
今天遇到一個開心事,在eclipse編寫的程式碼在命令視窗中編譯後無法執行,提示 “錯誤: 找不到或無法載入主類”
java中帶package和不帶package的編譯執行方式是不同的。 首先來了解一下package的概念:簡單定義為,package是一個為了方便管理組織java檔案的目錄結構,並防止不同java檔案之間發生命名衝突而存在的一個java特性。不同package中的類的名字可以相同,只是在使用時要帶上pac
解決dos視窗下執行.class檔案出現錯誤: 找不到或無法載入主類 HelloWorld
在D盤下:有個HelloWorld.java檔案: package example; public class HelloWorld { public static void main(Strin
cmd下執行java程式報錯:錯誤: 找不到或無法載入主類
通常出現這種問題有以下三種原因: 第一:環境變數配置不正確,配置環境變數時一定要將CLASSPATH配上,(配置教程) 第二:執行方法有誤,進入java檔案目錄下,首先執行javac xxx.jav
cmd可以編譯java檔案,執行時提示找不到或無法載入主類
錯誤原因有可能是以下幾種情況 1.沒有main函式入口,或者函式寫錯了 2.命令列 java 檔案路徑/檔名 注意不能加字尾名.class 3.檢視java執行的環境變數是否安裝正確;在cmd下執行java javadoc java -version 4.cmd命令列,從桌
Java 終端執行錯誤:找不到或無法載入主類
Java 在 mac 上用eclipse執行成功之後,我仍然想試用一下終端的執行,然而java命令成功,而javac命令總是出現錯誤:找不到或無法載入主類問題。 問題的解決 我的HelloWorld.java完整路徑名為/Users/Yaqi/Docum
javac編譯成功,用java執行class檔案出現“找不到或無法載入主類” 的問題解決起來很簡單
avac編譯成功,用java執行class檔案出現“找不到或無法載入主類” 的問題所在很簡單 學習android,順便又學習下java. 入門就遇到這樣的問題,環境變數按網上說的配好了,直接java 和 javac都有提示出來,說明沒問題了, 做了一個簡
cmd命令列執行java程式的編譯和執行的方法及可能出現找不到或無法載入主類的錯誤的解決
首先我們經常在用cmd命令列編譯和執行java程式時,我們的java程式呼叫了第三方的jar包,那麼編譯和執行的方法有兩種: 方法1: 編譯:javac -Djava.ext.dirs=E:\
java 命令列執行時報錯:找不到或無法載入主類
原始碼如下: 路徑目錄(...\src\object) 1 //: ch1.10/Command.java 2 /**@author feilong 3 * @version 1.0 4 */ 5 package object; 6 import java.util.*; 7 8
java 錯誤: 找不到或無法載入主類 Solution.class
Solution.java檔案中 public class Solution { public static void main(String[] args){ String str = "abcabcbb"; System.out.println(lengthOfLo
記一次解決cmd中執行java提示"找不到或無法載入主類"的問題
今天遇到一個問題:在cmd命令列中,用javac編譯java檔案可以成功,但是用java執行卻提示“找不到或無法載入主類”。現將該問題的原因以及解決辦法記錄一下。 先理解一下系統變數path和classpath的作用。 path:可執行命令的搜尋路徑,在該路徑下搜尋可以執行的程式或批處理檔案。 命令
springboot專案上有個紅叉,且ecplise沒有自動編譯專案,執行提示“錯誤: 找不到或無法載入主類”
近期在做springboot專案,發現springboot專案上有個紅叉但找不到哪個類報錯,ecplise沒有把專案自動編譯,執行還提示“錯誤: 找不到或無法載入主類”,進入工作空間“專案\target\classes”,發現專案java類根本沒有編譯,嘗試各種方式發現均
CMD命令列Java 錯誤:找不到或無法載入主類解決辦法
配置都正確的情況下操作流程 第一步:檢查.java檔案裡面的內容寫對沒有,切記,System的S要大寫,類名與檔名要相同,模板如下 第二步:Windows+r進入dos視窗,如果java檔案在E盤下