類名為 LogCleanJob,使用 hadoop jar 提交任務時拋出 ClassNotFoundException。網上多建議檢查 classpath 或 Jar 包依賴,但經排查環境變量與依賴均正常。
源碼文件頂部錯誤保留了 package 聲明,導致編譯生成的 class 文件路徑與執行時期待的不一致。Hadoop 預期主類在預設包(無 package)或與提交命令一致的包結構下。
package com.xxx.yyy; 行。javac LogCleanJob.java && jar cvf logclean.jar LogCleanJob.classhadoop jar logclean.jar LogCleanJobpackage名 + 類名。package 聲明時,類屬於 無名包(default package),限定名即簡單類名。jar 命令通過反射載入主類,若包名不匹配則找不到類。hadoop jar my.jar com.pkg.MainClassMain-Class 與 manifest,減少手動錯誤。一行多餘的 package 聲明,浪費數小時排查 —— 大數據開發中,細節決定成敗。