1. 程式人生 > >在命令列下編譯通過,執行時提示錯誤:找不到或無法載入主類的原因分析與解決方式

在命令列下編譯通過,執行時提示錯誤:找不到或無法載入主類的原因分析與解決方式

有時候我們需要直接用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要加各種包等等都是泛泛而談,真正靜下心分析這個問題的資料不多。很多都沒有說到點子上,會誤導人的。解決方式,應該為在編譯通過的基礎上,在原來執行指令的類名前加上:包名.main.即可,即執行指令變為:java 包名.main.類名

摘自:http://www.cnblogs.com/wangxiaoha/p/6293340.html

相關推薦

命令編譯通過執行提示錯誤無法入主原因分析解決方式

有時候我們需要直接用jdk提供的java命令來執行class檔案讓軟體執行起來,特別是很多初學者,但經常會發現如下提示: 用eclipse或用ant則沒有問題。 其實原因很簡單,我們忽略了2個細節。 1.java指令預設在尋找class檔案的地址是通過CLASSPATH環境變數中指定的目錄中尋找的。 2.

cmd執行Java命令編譯通過但是到主無法入主

剛剛開始學習Java時,發現一個重大問題,CMD執行javac命令能編譯,但是隻要執行java命令就顯示無法載入主類,但是eclipse正常執行,困擾了我很久,後來發現問題所在,是一個很奇葩的問題,給大家分享一下: 就是在用java命令時不要加.class字尾名!!!

關於命令中javac 編譯成功用 java 執行 class 檔案出現 “ 無法入主 ” 的問題

javac編譯成功,用java執行class檔案出現“找不到或無法載入主類”的問題所在 學習android,順便又學習下java. 在這裡推薦Mars老師的視訊,很好用,無論是Java4Android還是Android開發系列視訊教程都很好http://www.marschen.com/ 入門就遇到這樣的問

關於java編譯通過執行出錯到主問題解決

    剛接觸java,倒騰了半天設施好環境變數,控制檯輸入java、javac、java -version後,輸出正確。終於可以程式設計序了,很激動,於是直接從老師發的現成的程式碼包裡面考了一份(其

今天遇到一個開心事在eclipse編寫的程式碼在命令視窗中編譯無法執行提示錯誤: 無法入主

java中帶package和不帶package的編譯執行方式是不同的。 首先來了解一下package的概念:簡單定義為,package是一個為了方便管理組織java檔案的目錄結構,並防止不同java檔案之間發生命名衝突而存在的一個java特性。不同package中的類的名字可以相同,只是在使用時要帶上pac

用cmd命令編譯JAVA程式出現“無法入主

檢查環境變數配置: JAVA_HOME:D:\Java\jdk1.8.0_91 CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(前面有英文點號) Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

cmd可以編譯java檔案執行提示無法入主

錯誤原因有可能是以下幾種情況 1.沒有main函式入口,或者函式寫錯了 2.命令列 java 檔案路徑/檔名 注意不能加字尾名.class 3.檢視java執行的環境變數是否安裝正確;在cmd下執行java javadoc java -version 4.cmd命令列,從桌

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

LinuxJava執行.class檔案報錯無法入主

classpath配置的錯誤,所以找不到.class檔案。 原先的etc/profile中的classpath配置 export CLASSPATH=$JAVA_HOME/lib/tools.jar   更改後的: export CLASSPATH=.:$JAVA_HOME

關於'java' 是內部外部命令是可執行的程式 批處理檔案 和 錯誤: 無法入主 helloworld的問題

一、前幾天電腦重灌了一次系統將java配置的環境變數都弄沒了,自己添加了兩個新的變數JAVA_HOME(自己jdk的地址)以及在path中新增%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 然後因為這幾天都是用eclipse進行程式設計的,沒有出現問題,今天用命令來測試,發現出現了

springboot專案上有個紅叉且ecplise沒有自動編譯專案執行提示錯誤: 無法入主

近期在做springboot專案,發現springboot專案上有個紅叉但找不到哪個類報錯,ecplise沒有把專案自動編譯,執行還提示“錯誤: 找不到或無法載入主類”,進入工作空間“專案\target\classes”,發現專案java類根本沒有編譯,嘗試各種方式發現均

javac編譯成功用java執行class檔案出現“無法入主” 的問題解決起來很簡單

avac編譯成功,用java執行class檔案出現“找不到或無法載入主類” 的問題所在很簡單    學習android,順便又學習下java.    入門就遇到這樣的問題,環境變數按網上說的配好了,直接java 和 javac都有提示出來,說明沒問題了, 做了一個簡

mac終端執行java檔案報錯無法入主

由面試題出來的 為了顯示 myStr = 23 這樣的結果,寫出在控制檯輸入的命令 public class MyClass { public static void main(String args[]) { String s1 = args[0]; String s2 = args[

cmdjava命令報錯 無法入主(已解決

解決辦法: 執行步驟:把檔案目錄轉換到目標Demo.java檔案所在目錄→執行 javac Demo.java 命令(會看到目錄下生成新的Demo.class檔案)→接著執行 java Demo 命令。 第一步轉換目錄是必須的(雖然把Demo.java移到 jdk的bin資料夾下,使java

記一次使用cmd執行java檔案遇到的坑...包括“使用java命令執行class檔案提示錯誤無法入主“的問題”

  今天寫了一個java檔案,類似聊天軟體的東西。在eclipse裡輸入輸出顯得沒感覺,於是乎就準備在cmd裡輸入和顯示輸出。如下圖,我準備執行的是ChatDemo.class檔案。路徑是:D:\workspace\Learn\bin\com\udp 。      然後我就開啟cmd,傻傻的輸入:cd D

解決dos視窗執行.class檔案出現錯誤: 無法入主 HelloWorld

在D盤下:有個HelloWorld.java檔案: package example; public class HelloWorld { public static void main(Strin

使用java命令執行class檔案提示錯誤無法入主“的問題分析

有時候我們需要直接用jdk提供的java命令來執行class檔案讓軟體執行起來,特別是很多初學者,但經常會發現如下提示: 用eclipse或用ant則沒有問題。 其實原因很簡單,我們忽略了2個細節。 1.java指令預設在尋找class檔案的地址是通過CLASSPATH環境變數中指定的目錄中尋找的。 2.我

cmd執行java程式報錯錯誤: 無法入主

通常出現這種問題有以下三種原因: 第一:環境變數配置不正確,配置環境變數時一定要將CLASSPATH配上,(配置教程) 第二:執行方法有誤,進入java檔案目錄下,首先執行javac xxx.jav

cmd執行Java的步驟以及出現無法入主解決辦法

cmd下編譯執行Java步驟(前提是JDK和環境變數已配置好): 假設HelloWorld.java放在D:\JavaProject\src 1.轉到檔案所在碟符: 輸入 d: 然後回車鍵 2.進入相