java.lang.NoClassDefFoundError: com/sun/pdfview/PDFFile
at com.gotop.common.PdfToJpgTest.setup(PdfToJpgTest.java:28)
現象:PDFRenderer-0.9.0.jar 已導入,單獨運行測試類通過,集成到項目中報錯。
| 異常 | 階段 | 原因 |
|---|---|---|
| ClassNotFoundException | 類加載 | 類路徑中找不到 .class 文件 |
| NoClassDefFoundError | 類初始化 | 類文件**找到**了,但**靜態初始化失敗**或**依賴類缺失** |
PDFRenderer 依賴其他 JAR (如 jai_imageio, jbig2) 未打包。用 mvn dependency:tree 或 IDEA「Dependencies」面板檢查。mvn dependency:analyze 定位。Thread.currentThread().getContextClassLoader()。PDFFile 類的 static {} 塊拋出異常(如訪問本地圖形環境 Headless 模式未啟動)。添加 JVM 參數 -Djava.awt.headless=true。PDFRenderer-0.9.0 年代久遠,可能不支持 JDK 1.4+ 的某些特性,或需要舊版 rt.jar 類。建議遷移至維護中的 Apache PDFBox 或 iText。// 在報錯前添加斷點或日誌,打印類加載器與類路徑
System.out.println(PdfToJpgTest.class.getClassLoader());
System.out.println(System.getProperty("java.class.path"));
// 或啟用 JVM 參數
-verbose:class -XX:+TraceClassLoading