java java.lang.NoClassDefFoundError


  不含包層次的HelloWorld.java
  public class HelloWorld

      {

        public static void main(String[] args)

             {

                    System.out.println("Hello World!");

             }

     }
  保存在E:\java\src下,命令行下,改變當前路徑到:E:\java\src,使用javac命令編譯:
  E:\java\src>javac HelloWorld.java
  運行:
  E:\java\src>java HelloWorld
  屏幕打印出:
  Hello World!
  初學者常犯的錯誤
  1. 運行時,帶了.class后綴
  如果你試圖使用如下命令:
  E:\java\src>java HelloWorld.class
   系統會誤認為你運行的是HelloWorld包下的名為class的類文件,會到系統的CLASSPATH下(一般都包括當前目錄)企圖尋找 HelloWorld.class.class這樣的類,這樣的類當然不存在了;並且也不可能存在,因為class是關鍵字,不能作為一個類的名字。所以 會報如下錯誤信息:
  Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/class
  2. 文件名大小寫錯誤
  對於像Windows這樣的系統,編譯時可以不關心大小寫。比如編譯HelloWorld.java時,也可以使用:
  E:\java\src>javac helloworld.java
  也可以編譯通過,但產生的類文件仍然是和源文件相符的:HelloWorld.class。
  但在運行時一定要注意大小寫,比如試圖使用如下命令運行:
  E:\java\src>java helloworld
  將報類似於1中的錯誤:
  Exception in thread "main" java.lang.NoClassDefFoundError: helloworld (wrong name: HelloWorld)

 


  包含包層次的HelloWorld.java
  比如上面的HelloWorld.java修改如下:
   package org.javaresearch;

        public class HelloWorld

          {

              public static void main(String[] args)

             {

                    System.out.println("Hello World!");

             }

         }

  編譯時有兩種方法
  1. 直接編譯
  E:\java\src>javac HelloWorld.java
  此時在當前目錄下輸出HelloWorld.class。此時,運行不能使用上面相同的方法,使用:
  E:\java\src>java HelloWorld
  運行時,出現如下錯誤:
  Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: org/javaresearch/HelloWorld)
   從上述錯誤信息你也可以看到,系統可以找到HelloWorld類,但這個類屬於org.javaresearch包。所以,你要做的就是按照上述包層次,相應的創建目錄層次,把上面生成的HelloWorld.class放到E:\java\src\org\javaresearch\目錄下。運行(這時候是在包層次的最高層目錄下運行的):
  E:\java\src >java org.javaresearch.HelloWorld
  系統打印出:
  Hello World!
  這兒要注意的是,不能使用java org\javaresearch\HelloWorld來運行,此時同樣會出現如下錯誤:
  Exception in thread "main" java.lang.NoClassDefFoundErrorrg\javaresearch\HelloWorld (wrong name: org/javaresearch/HelloWorld)
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM