一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java 找不到或無法加載主類的修復方法

Java 找不到或無法加載主類的修復方法

2021-08-02 11:24sofia Java教程

這篇文章主要介紹了Java 找不到或無法加載主類的修復方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

有時,當我們運行Java程序時,我們可能會看到“找不到或無法加載主類”。原因很容易猜測:JVM找不到主類并給出了這個錯誤。但是為什么不能呢?

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

示例程序

 

我們將從HelloWorld程序開始:

?
1
2
3
4
5
public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello world..!!!");
  }
}

現在讓我們編譯它:

?
1
$ javac HelloWorld.java

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

在下面的部分中,我們將運行這個.class文件,并嘗試理解錯誤“找不到或加載主類”的可能原因。

錯誤的類名

 

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

?
1
java <.class filename>

運行我們的程序:

?
1
2
$ java helloworld
Error: Could not find or load main class helloworld

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

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

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

?
1
2
$ java HelloWorld
Hello world..!!!

這次它成功地運行了。

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

?
1
$ javac HelloWorld.java

但是要運行.class文件,我們需要提供類名,而不是文件名。因此不需要提供.class擴展:

?
1
2
$ java HelloWorld.class
Error: Could not find or load main class HelloWorld.class

同樣,讓我們使用正確的類名運行程序:

?
1
2
$ java HelloWorld
Hello world..!!!

Java包名稱

 

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

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

?
1
2
3
4
5
6
7
package com.baeldung;
 
public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello world..!!!");
  }
}

現在,讓我們像以前一樣編譯并運行更新的HelloWorld程序:

?
1
2
$ java HelloWorld
Error: Could not find or load main class HelloWorld

但我們再次得到錯誤“找不到或加載主類HelloWorld”!

讓我們試著理解我們錯過了什么。

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

現在,當我們創建com.baeldung包時實際上我們創建了一個文件夾結構,如:

?
1
com/baeldung/HelloWorld.java

首先,讓我們嘗試從com/baeldung目錄運行程序:

?
1
2
$ java com.baeldung.HelloWorld
Error: Could not find or load main class com.baeldung.HelloWorld

盡管如此,我們還是無法運行我們的程序。

在這里,當我們指定完全限定類名時:com.baeldung.HelloWorld,Java試圖找到HelloWorld.class類文件在com/baeldung中,在我們運行程序的目錄下。

由于我們已經在com/baeldung中,Java無法找到并運行HelloWorld程序。

現在,讓我們回到父文件夾并運行它:

?
1
2
$ java com.baeldung.HelloWorld
Hello world..!!!

是的,我們再次能夠向世界問好。

類路徑無效

 

在繼續之前,讓我們首先了解什么是類路徑classpath——它是當前運行的JVM可用的一組類。

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

在運行程序時,我們可以使用-classpath選項提供類路徑。例子:

?
1
java -classpath /my_programs/compiled_classes HelloWorld

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

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

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

?
1
2
$ java -claspath ../../ com.baeldung.HelloWorld
Hello world..!!!

這里,“…”表示父目錄。在本例中,“../../”表示包層次結構的頂部。

以上就是Java 找不到或無法加載主類的修復方法的詳細內容,更多關于Java 找不到或無法加載主類的資料請關注服務器之家其它相關文章!

原文鏈接:http://javakk.com/1427.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 娇妻被老外疯狂调教 | 精品久久久噜噜噜久久7 | 欧美精品1区 | 大肚孕妇的高h辣文 | 成年人视频在线免费看 | 欧美国产日韩综合 | 午夜免费啪视频观看视频 | 亚洲精品欧洲久久婷婷99 | 91桃色视频在线观看 | 国产午夜精品理论片 | 国产精品视频播放 | 欧美日韩国产亚洲一区二区 | 日本五十路六十30人8时间 | 久久久久青草大香线综合精品 | 亚洲品质自拍视频网站 | 精品乱lun小说 | 欧美色青 | 男女一级特黄a大片 | 鸭子玩富婆流白浆视频 | 日韩日b视频 | xxxx俄罗斯大白屁股 | 果冻传媒在线完整免费观 | 青青青手机在线视频 | 美女扒开两腿露出尿口的视频 | 88av免费观看| www.一区二区三区.com | 欧美色综合高清免费 | 国产精品免费看久久久香蕉 | 国产九九热视频 | 亚洲免费视频播放 | 乳女教师欲乱动漫无修版动画3d | 波多野结衣xxxx性精品 | 99热免费在线 | 亚洲精品国产在线观看 | 19+韩国女主播激情vip视频在线 | 性做久久久久久久久浪潮 | www.毛片在线观看 | 久久99精品久久久久久园产越南 | 色视频亚洲 | 波多野结衣 在线播放 | 久久一本岛在免费线观看2020 |