日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析

發(fā)布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

有時候我們需要直接用jdk提供的java命令來執(zhí)行class文件讓軟件運行起來,特別是很多初學者,但經(jīng)常會發(fā)現(xiàn)如下提示:

用eclipse或用ant則沒有問題。

其實原因很簡單,我們忽略了2個細節(jié)。

  • java指令默認在尋找class文件的地址是通過CLASSPATH環(huán)境變量中指定的目錄中尋找的。

  • 我們忽略了package的影響。

  • 第一個問題好解決:

    我們直接在CLASSPATH環(huán)境變量中加入“.;”即可。“.”的意思是搜索當前目錄,但其實jdk1.5之后便無需再配置classpath

    第二個問題看下面分析:

    看下面兩個類

    類A

    類B

    類A和類B的唯一差別就是沒有定義包名。

    我們的工程路徑是D:\HelloWorld,在HelloWorld文件夾中建立一個src文件夾,類B的源代碼文件就放在src中。用javac編譯完以后

    會在src文件夾中生成NewsManager.class,如下

    執(zhí)行如下:

    現(xiàn)在我們再把源代碼換成類A

    為什么加入了package后就不對了呢?

    類A中package的路徑是org.will.app.main。按照java規(guī)定,我們應該按照package定義的路徑來存放源文件,類A應該放入:

    src\org\will\app\main下,如下:

    然后我們編譯執(zhí)行:

    依然有問題,為什么,其實大家再回去看看java的書籍就會發(fā)現(xiàn),一個類的全名應該是包名+類名。類A的全名:org.will.app.main.NewsManager

    好的,再試試:


    還是不對。為什么?

    仔細看上面的圖,我們在main目錄下讓java命令去執(zhí)行org.will.app.main.NewsManager,其實它會以為類的路徑是:

    D:\HelloWorld\src\org\will\app\main\org\will\app\main\NewsManager,大家看到了吧,路徑重復了。

    所以,我們應該這樣執(zhí)行:

    總結:

    • 一、java執(zhí)行class文件是根據(jù)CLASSPATH指定的地方來找,不是我們理解當前目錄。如果希望它查詢當前目錄,需要在CLASSPATH中加入“.;”,代表當前目錄。

    • 二 、java執(zhí)行class文件對package的路徑是強依賴的。它在執(zhí)行的時候會嚴格以當前用戶路徑為基礎,按照package指定的包路徑轉化為文件路徑去搜索class文件。各位同學以后注意就OK啦。至于網(wǎng)上說的要在CLASSPATH要加各種包等等都是泛泛而談,真正靜下心分析這個問題的資料不多。很多都沒有說到點子上,會誤導人的。

    文章轉自

    總結

    以上是生活随笔為你收集整理的使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。