Preface 在瀏覽本文之前,請保證已經(jīng)安裝好JDK, JRE,并且對如何設(shè)置classpath有基本認識。 Environment OS: Windows XP Java Development Kit: 1.6.0_06 Java Runtime Environemt: 6 Introduction 本文主要講述在CMD上run Java program 時可能遇到的 Exception in thread "main" java.lang.NoClassDefFoundError 問題以及解決方法。
Section 1 - Problem: 如果利用CMD去run Java program,往往會遇到 Exception in thread "main" java.lang.NoClassDefFoundError 的問題。 Section 2 - Reason: 其實原因有多種,在本文中可能無法涵蓋所有引致這個問題原因,只是列出最為常見的動因。首先可能是你的program在run的時候需要特定的jar包,例如jdom.jar這一類,而你卻沒有把它們的所在地址放到classpath里面;其次可能是涉及到具有package結(jié)構(gòu)的class文件,通常在exception中帶有wrong name提示。 Section 3 - Solution: (1) 對于jar包問題,首先要將你的program用到的jar包的目錄地址輸入到classpath里面。例如我有個一個JDOM的jar包在D:\JavaLibraries\jdom-1.1\build\jdom.jar,則我需要在classpath內(nèi)已有內(nèi)容的分號后加入"D:\JavaLibraries\jdom-1.1\build\jdom.jar;"(引號以內(nèi))的這串字符,當然這是針對一般已經(jīng)對classpath設(shè)置過其他內(nèi)容的做法;如果你是新建立的classpath或者內(nèi)面完全沒有值,你則需要在基于以上的字符串前頭再加多".;",即".,D:\JavaLibraries\jdom-1.1\build\jdom.jar;"。 (2) 對于package結(jié)構(gòu)問題,你需要在classpath中設(shè)置一下你package所在的目錄地址,并且在CMD上輸入帶有package名的command。例如我在develop program的時候,我將Rd.java和RdService.java定義在rd這個package下(在實際的文件系統(tǒng)中,你會看到那兩個java文件就在在rd這個folder之下),當我同樣在D:\program\rd這個folder下編譯生成Rd.class和RdService.class(它會被Rd.class調(diào)用),我現(xiàn)在打算run Rd.class這個文件,則需要將"D:\program;"加入到classpath,然后在CMD上輸入"java rd.Rd",這樣就能夠是program run起來了。 |
|