导入PDFBox依赖后Apache Tika PDFParser报NoClassDefFoundError求助
问题解决方法
核心原因
你遇到的NoClassDefFoundError是依赖版本冲突导致的:
- Tika 1.12内置依赖的是PDFBox 1.x版本,该版本的加密异常类路径为
org.apache.pdfbox.exceptions.CryptographyException - 你手动添加的PDFBox 2.0.12属于大版本升级,已经移除了这个旧包路径,相关异常被迁移到
org.apache.pdfbox.io下,导致Tika的PDFParser加载时找不到旧类。
解决方案
方案1:移除手动添加的PDFBox依赖,用Tika自带的适配版本
直接删除你添加的PDFBox 2.0.12依赖,Tika 1.12已经自带了适配的PDFBox 1.x版本,不会再出现类加载异常。
如果需要处理扫描版PDF(图片型PDF),请添加Tika的OCR扩展依赖,而非手动引入PDFBox:
<dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-parsers</artifactId> <version>1.12</version> </dependency> <dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>3.0.0</version> </dependency>
添加后,Tika会自动调用Tesseract OCR处理扫描PDF中的图片内容。
方案2:升级Tika到2.x版本(推荐)
Tika 2.x原生支持PDFBox 2.x,彻底解决版本冲突问题,同时OCR集成更完善:
<!-- Tika核心包 --> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-core</artifactId> <version>2.9.1</version> </dependency> <!-- 标准解析器包(包含PDF解析) --> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-parsers-standard-package</artifactId> <version>2.9.1</version> </dependency> <!-- OCR模块,处理扫描PDF --> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-parsers-ocr-module</artifactId> <version>2.9.1</version> </dependency>
升级后,你不需要手动引入PDFBox,Tika会自动管理适配的依赖版本。
内容的提问来源于stack exchange,提问作者Anson Pang
相关产品推荐
相关产品推荐

