项目场景:
项目有个需求 根据word 和ppt模板自动生成新的word和ppt
问题描述
在生成ppt的过程中报了一个错误Exception in thread "main" java.lang.NoSuchFieldError: Factory
而我重新创建一个项目跑就没有问题
Exception in thread "main" java.lang.NoSuchFieldError: Factory
at org.apache.poi.xslf.usermodel.XSLFSlideMaster.<init>(XSLFSlideMaster.java:66)
at org.apache.poi.ooxml.POIXMLFactory.createDocumentPart(POIXMLFactory.java:61)
at org.apache.poi.ooxml.POIXMLDocumentPart.read(POIXMLDocumentPart.java:661)
at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:165)
at org.apache.poi.xslf.usermodel.XMLSlideShow.<init>(XMLSlideShow.java:123)
at org.apache.poi.xslf.usermodel.XMLSlideShow.<init>(XMLSlideShow.java:137)
at com.dfsjsoft.nutzplus.module.template.ppt.PPTdemo01.main(PPTdemo01.java:42)
原因分析:
后来发现是版本冲突,我用word使用的是 poi-tl用的是1.8.0
,而我操作ppt 的时候用的poi和poi-ooxml 都是5.2.2
解决方案:
最后解决方法 把poi-tl换成更高的版本就行了
我换成1.12.0 完美解决