av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

Java 找不到或無法加載主類的修復(fù)方法

瀏覽:108日期:2022-08-17 13:18:58

有時(shí),當(dāng)我們運(yùn)行Java程序時(shí),我們可能會(huì)看到“找不到或無法加載主類”。原因很容易猜測(cè):JVM找不到主類并給出了這個(gè)錯(cuò)誤。但是為什么不能呢?

在本文中,我們將討論找不到主類的可能原因。另外,我們將看看如何修復(fù)它們。

示例程序

我們將從HelloWorld程序開始:

public class HelloWorld { public static void main(String[] args) { System.out.println('Hello world..!!!'); }}

現(xiàn)在讓我們編譯它:

$ javac HelloWorld.java

在這里,編譯器將為我們的程序生成一個(gè).class文件。此.class文件將在同一目錄中生成。class文件將與Java程序中給定的類名具有相同的名稱。這個(gè).class文件是可執(zhí)行的。

在下面的部分中,我們將運(yùn)行這個(gè).class文件,并嘗試?yán)斫忮e(cuò)誤“找不到或加載主類”的可能原因。

錯(cuò)誤的類名

要運(yùn)行Java編譯器生成的.class文件,可以使用以下命令:

java <.class filename>

運(yùn)行我們的程序:

$ java helloworldError: Could not find or load main class helloworld

是的,它失敗了,錯(cuò)誤是“Could not find or load main class helloworld”即找不到或加載主類helloworld。

如前所述,編譯器將生成.class文件,其名稱與程序中Java類的名稱完全相同。所以在我們的例子中,主類的名稱是HelloWorld,而不是helloworld,要區(qū)分大小寫。

讓我們用正確的方式再試一次:

$ java HelloWorldHello world..!!!

這次它成功地運(yùn)行了。

文件擴(kuò)展名要編譯Java程序,必須提供文件名及其擴(kuò)展名(.java):

$ javac HelloWorld.java

但是要運(yùn)行.class文件,我們需要提供類名,而不是文件名。因此不需要提供.class擴(kuò)展:

$ java HelloWorld.classError: Could not find or load main class HelloWorld.class

同樣,讓我們使用正確的類名運(yùn)行程序:

$ java HelloWorld Hello world..!!!Java包名稱

在Java中,我們將類似的類放在一起,稱之為包。

讓我們把HelloWorld類移到com.baeldung包:

package com.baeldung;public class HelloWorld { public static void main(String[] args) { System.out.println('Hello world..!!!'); }}

現(xiàn)在,讓我們像以前一樣編譯并運(yùn)行更新的HelloWorld程序:

$ java HelloWorldError: Could not find or load main class HelloWorld

但我們?cè)俅蔚玫藉e(cuò)誤“找不到或加載主類HelloWorld”!

讓我們?cè)囍斫馕覀冨e(cuò)過了什么。

要運(yùn)行包中的Java類,必須提供其完全限定名。所以在我們的例子中,HelloWorld的完全限定名是:com.baeldung.HelloWorld.

現(xiàn)在,當(dāng)我們創(chuàng)建com.baeldung包時(shí)實(shí)際上我們創(chuàng)建了一個(gè)文件夾結(jié)構(gòu),如:

com/baeldung/HelloWorld.java

首先,讓我們嘗試從com/baeldung目錄運(yùn)行程序:

$ java com.baeldung.HelloWorldError: Could not find or load main class com.baeldung.HelloWorld

盡管如此,我們還是無法運(yùn)行我們的程序。

在這里,當(dāng)我們指定完全限定類名時(shí):com.baeldung.HelloWorld,Java試圖找到HelloWorld.class類文件在com/baeldung中,在我們運(yùn)行程序的目錄下。

由于我們已經(jīng)在com/baeldung中,Java無法找到并運(yùn)行HelloWorld程序。

現(xiàn)在,讓我們回到父文件夾并運(yùn)行它:

$ java com.baeldung.HelloWorldHello world..!!!

是的,我們?cè)俅文軌蛳蚴澜鐔柡谩?/p>類路徑無效

在繼續(xù)之前,讓我們首先了解什么是類路徑classpath——它是當(dāng)前運(yùn)行的JVM可用的一組類。

我們使用classpath變量告訴JVM在文件系統(tǒng)上的何處找到.class文件。

在運(yùn)行程序時(shí),我們可以使用-classpath選項(xiàng)提供類路徑。例子:

java -classpath /my_programs/compiled_classes HelloWorld

在這里,Java將尋找HelloWorld.class類文件在/my_programs/compiled_classes文件夾中,這個(gè)文件夾的名稱是我們剛剛編出來的。默認(rèn)情況下,classpath變量設(shè)置為“.”,表示當(dāng)前目錄。

在上面的部分中,我們更改了目錄以運(yùn)行程序。但是如果我們想從其他文件夾運(yùn)行它呢?這時(shí)classpath變量可以幫助我們。

要從com/baeldung目錄運(yùn)行我們的程序,我們可以簡(jiǎn)單地說,我們的類路徑是向上的兩個(gè)目錄—每個(gè)包部分一個(gè):

$ java -claspath ../../ com.baeldung.HelloWorldHello world..!!!

這里,“…”表示父目錄。在本例中,“../../”表示包層次結(jié)構(gòu)的頂部。

以上就是Java 找不到或無法加載主類的修復(fù)方法的詳細(xì)內(nèi)容,更多關(guān)于Java 找不到或無法加載主類的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 欧美一区免费 | 国产一级黄色录像 | a级片免费| 在线观看二区 | 成人av一区二区三区在线观看 | 国产麻豆视频 | 91精品久久久久久 | 伊人久久综合 | 久久日本| 婷婷第四色 | 亚洲一区免费视频 | 日韩成人免费 | 亚洲国产欧美日韩在线 | 91国产丝袜在线播放 | 日本一区二区三区在线视频 | 亚洲天堂av网 | 精品亚洲国产成人av制服丝袜 | 日日干干| 成人在线视频免费 | 天堂成人av| 91超碰在线观看 | 性做久久久久久 | 黄色网址视频 | 青青青在线视频 | 欧美黄色片网站 | 久久久精品一区 | 国产精品久久久久久久久久久久久久久 | 日韩精品观看 | 亚洲一区二区免费视频 | 欧美一级做性受免费大片免费 | 亚洲看片 | 一级黄色片在线观看 | 国产成人在线免费观看 | 欧美国产日韩在线 | 色黄大色黄女片免费中国 | 国产一级黄色录像 | 久久日韩精品 | 国产裸体永久免费视频网站 | 欧美色综合网 | 国产午夜在线 | 欧美午夜精品一区二区三区 |