欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年02月02日 10:26:20   作者:sofia  
這篇文章主要介紹了Java 找不到或無法加載主類的修復方法,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

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

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

示例程序

我們將從HelloWorld程序開始:

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

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

$ javac HelloWorld.java

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

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

錯誤的類名

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

java <.class filename>

運行我們的程序:

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

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

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

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

$ java HelloWorld
Hello world..!!!

這次它成功地運行了。

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

$ javac HelloWorld.java

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

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

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

$ 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)在,讓我們像以前一樣編譯并運行更新的HelloWorld程序:

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

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

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

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

現(xiàn)在,當我們創(chuàng)建com.baeldung包時實際上我們創(chuàng)建了一個文件夾結構,如:

com/baeldung/HelloWorld.java

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

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

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

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

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

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

$ java com.baeldung.HelloWorld
Hello world..!!!

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

類路徑無效

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

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

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

java -classpath /my_programs/compiled_classes HelloWorld

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

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

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

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

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

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

相關文章

  • Springboot Session共享實現(xiàn)原理及代碼實例

    Springboot Session共享實現(xiàn)原理及代碼實例

    這篇文章主要介紹了Springboot Session共享實現(xiàn)原理及代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 說說Spring中為何要引入Lookup注解

    說說Spring中為何要引入Lookup注解

    這篇文章主要給大家介紹了關于Spring中為何要引入Lookup注解的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Java中計算時間差的方法

    Java中計算時間差的方法

    這篇文章主要介紹了Java中計算時間差的方法,實例分析了java常見的三種計算時間差的技巧,需要的朋友可以參考下
    2015-06-06
  • java web如何解決瞬間高并發(fā)

    java web如何解決瞬間高并發(fā)

    這篇文章主要為大家詳細介紹了java web解決瞬間高并發(fā)的策略,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Java中的FutureTask實現(xiàn)代碼實例

    Java中的FutureTask實現(xiàn)代碼實例

    這篇文章主要介紹了Java中的FutureTask手寫代碼實例,FutureTask是Future的實現(xiàn),用來異步任務的獲取結果,可以啟動和取消異步任務,查詢異步任務是否計算結束以及獲取最終的異步任務的結果,需要的朋友可以參考下
    2023-12-12
  • SpringBoot整合MongoDB全過程

    SpringBoot整合MongoDB全過程

    這篇文章主要介紹了SpringBoot整合MongoDB全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 如何在Spring?Boot框架中使用攔截器實現(xiàn)URL限制

    如何在Spring?Boot框架中使用攔截器實現(xiàn)URL限制

    在Spring?Boot框架中,您可以使用攔截器(Interceptor)來控制限制URL列表,本文通過一個簡單的示例給大家介紹Spring?Boot?攔截器實現(xiàn)URL限制的操作方法,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • SpringBoot中的事務回滾規(guī)則詳解

    SpringBoot中的事務回滾規(guī)則詳解

    這篇文章主要介紹了SpringBoot中的事務回滾規(guī)則詳解,事務是指一系列的操作,這些操作要么全部成功,要么全部失敗。在Spring Boot中,我們可以使用事務管理器來管理事務,在使用事務管理器的時候,一個非常重要的概念就是事務回滾,需要的朋友可以參考下
    2023-07-07
  • Spring Boot 項目啟動自動執(zhí)行方法的兩種實現(xiàn)方式

    Spring Boot 項目啟動自動執(zhí)行方法的兩種實現(xiàn)方式

    這篇文章主要介紹了Spring Boot 項目啟動自動執(zhí)行方法的兩種實現(xiàn)方式,幫助大家更好的理解和學習使用Spring Boot框架,感興趣的朋友可以了解下
    2021-05-05
  • Spring Task定時任務的實現(xiàn)詳解

    Spring Task定時任務的實現(xiàn)詳解

    這篇文章主要介紹了SpringBoot定時任務功能詳細解析,這次的功能開發(fā)過程中也算是對其內涵的進一步了解,以后遇到定時任務的處理也更清晰,更有效率了,對SpringBoot定時任務相關知識感興趣的朋友一起看看吧
    2022-08-08

最新評論