現象
java.lang.NoClassDefFoundError: com/sun/pdfview/PDFFile,單獨運行測試類正常,集成到項目中報錯。
原因
- 類路徑不一致:測試環境(如 Maven test scope)包含依賴 JAR,打包/部署環境(WAR/EAR/Classpath)缺少該 JAR 或版本衝突。
- 類加載器隔離:應用服務器(Tomcat/WebLogic)多層類加載器,父子加載器可見性差異導致類找不到。
- JDK 版本不兼容:
PDFRenderer-0.9.0.jar 可能不支持 JDK 1.4,需升級 JDK 或換庫。
排查步驟
- 檢查部署產物 (WEB-INF/lib) 是否包含該 JAR。
- 執行
mvn dependency:tree 確認依賴傳遞無衝突。
- 嘗試升級 JDK 至 1.8+,或換用
Apache PDFBox 等維護中的庫。