1. 程式人生 > >使用java命令執行class檔案提示“錯誤:找不到或無法載入主類“的問題分析

使用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盤下