首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

JDK 環境配置疑難雜症:NoClassDefFoundError 徹底解決方案

     編輯:Java 程式設計入門

經典錯誤重現

C:\>javac HelloWorld.java
C:\>java HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld

原始碼正確、編譯通過,執行卻找不到類別。這是初學者最常遇到的 CLASSPATH 配置問題。

作者實測環境

  • OS:Windows 2000
  • JDK:1.3.0(安裝於 C:\jdk130)

正確的三大環境變數設定

變數名值說明
java_homeC:\jdk130JDK 安裝根目錄
classpath.;C:\jdk130\lib\tools.jar;C:\jdk130\lib\dt.jar;C:\jdk130\bin首項 . 代表當前目錄,極關鍵
pathC:\jdk130\bin讓系統找到 javac/java 指令

實測驗證流程

  1. 在 D:\java 建立 Hello.java
  2. cd D:\java → javac Hello.java → 編譯通過
  3. java Hello → 正常輸出結果 ✓

進階情境:package 宣告的影響

若原始碼首行加入 package hello;:

  • 編譯需加參數:javac -d . Hello.java(會在當前目錄產生 hello/Hello.class)
  • 執行方式二擇一:java hello.Hello 或 java hello/Hello(在 hello 目錄外層執行)
  • 陷阱:若 cd hello 進入目錄內執行 java Hello → 仍噴 NoClassDefFoundError: Hello (wrong name: hello/Hello)

核心原理解析

  • CLASSPATH 指定類別搜尋根路徑
  • 包結構對應目錄層級,執行時需從 CLASSPATH 根目錄 以完整類別名(含包路徑)啟動
  • . 讓當前目錄成為搜尋根,故無 package 時在原始碼目錄直呼 java Hello 可行;有 package 時須退至包根目錄上層執行

給初學者的檢查清單

  1. PATH 是否包含 %JAVA_HOME%\bin?
  2. CLASSPATH 是否以 . 開頭?
  3. 執行目錄是否正確(包結構下需在包根上層)?
  4. 類別名大小寫是否與檔案名、package 宣告完全一致?
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved