weblogic报java.lang.ClassNotFoundException: org.apache.poi.POIXMLTypeLoader
java.lang.ClassNotFoundException: org.apache.poi.POIXMLTypeLoader
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1892)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735)
at org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDocument1$Factory.newInstance(Unknown Source)
at org.apache.poi.xwpf.usermodel.XWPFDocument.onDocumentCreate(XWPFDocument.java:279)
at org.apache.poi.xwpf.usermodel.XWPFDocument.(XWPFDocument.java:131)
at com.hundsun.hsbpm.common.action.PrintReportAction.report(PrintReportAction.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:180)
解决办法:引入poi的3.15以上的版本
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</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>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
发现新的问题
java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
描述:项目在tomcat服务器上部署时,使用POI导出Excel文件不会报错,能够正常下载,将项目部署在Weblogic服务器上后,使用POI导出Excel文件报错:
java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setEntityExpansi
原因:在Weblogic中,如果事先未将项目自带的依赖文件优先级设置为最高,那么Weblogic默认会先去加载其本身就有的低版本的beansxml依赖,高版本中的方法就会出现找不到的情况
解决办法::设置项目依赖文件的优先级,在项目的文件META-INF下新建一个weblogic.xml,内容如下:
<?xml version="1.0"?>
<weblogic-web-app
xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app"
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd
http://xmlns.oracle.com/weblogic/weblogic-web-app
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
<wls:container-descriptor>
<wls:prefer-application-packages>
<wls:package-name>org.apache.xmlbeans.*</wls:package-name>
</wls:prefer-application-packages>
</wls:container-descriptor>
<!-- 部署weblogic时,改成项目名 -->
<wls:context-root>/xx-admin</wls:context-root>
<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>
</wls:weblogic-web-app>
2、本站文章部分来源注册用户发布或互联网收集而来,若有侵权,请邮件联系作者。
邮箱地址:wtao219@qq.com