Exception java.lang.NoClassDefFoundError: org/apache/poi/POIXMLDocumentPart

不会替换 jar 包可以参考这篇文章 不重新打包,只修改 jar 包中的某个文件、某个类

1. 功能:Word 转 PDF

2. 使用包的版本如下

POI    PDF
<dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>4.1.2</version>
        </dependency>

<dependency>
            <groupId>fr.opensagres.xdocreport</groupId>
            <artifactId>fr.opensagres.xdocreport.itext.extension</artifactId>
            <version>2.0.1</version>
        </dependency>
        <dependency>
            <groupId>fr.opensagres.xdocreport</groupId>
            <artifactId>org.apache.poi.xwpf.converter.core</artifactId>
            <version>1.0.6</version>
        </dependency>
        <dependency>
            <groupId>fr.opensagres.xdocreport</groupId>
            <artifactId>org.apache.poi.xwpf.converter.pdf</artifactId>
            <version>1.0.6</version>
        </dependency>

3. 问题:

关键出错 jar 包:org.apache.poi.xwpf.converter.core 

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/POIXMLDocumentPart
    at org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument.getFontsDocument(XWPFStylesDocument.java:1477)
    at org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument.<init>(XWPFStylesDocument.java:190)
    at org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument.<init>(XWPFStylesDocument.java:184)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.createStylesDocument(XWPFDocumentVisitor.java:166)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.<init>(XWPFDocumentVisitor.java:159)
    at org.apache.poi.xwpf.converter.pdf.internal.PdfMapper.<init>(PdfMapper.java:149)
    at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:55)
    at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:38)
    at org.apache.poi.xwpf.converter.core.AbstractXWPFConverter.convert(AbstractXWPFConverter.java:45)
    at com.test.WordPdfUtils.wordConverterToPdf(WordPdfUtils.java:113)
    at com.test.WordPdfUtils.wordConverterToPdf(WordPdfUtils.java:66)
    at com.test.WordPdfUtils.main(WordPdfUtils.java:47)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.POIXMLDocumentPart
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 12 more

3. 原因:POI高版本的包中 org.apache.poi.POIXMLDocumentPart 类的改动很大,而相应的 pdf 包已经很久没有维护目前是1.0.6(如果使用POI3.0的版本还是可以的)

4. 解决方案

(2-1) 下载源码,org.apache.poi.xwpf.converter.core 源码包下载链接

(2-2) 修改  org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument 类中调用 POIXMLDocumentPart 的部分

一共四行代码,第一行是引包,其他三行是一样的,详细见下图

5. 打包方法参考

(1)修改后自己正常打包就可以,手动替换一下本地 maven 目录下的 org.apache.poi.xwpf.converter.core 包

(2)或者可以在自己的项目中,单独创建这个目录和修改后的类

6. 资源

修改后的类以及Word转PDF工具类

(修改后的 org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument

以及Word转PDF的工具类)
 

原文地址:https://blog.csdn.net/u011852988

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇