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>
1、所有文章未经授权禁止转载、摘编、复制或建立镜像,如有违反,追究法律责任。
2、本站文章部分来源注册用户发布或互联网收集而来,若有侵权,请邮件联系作者。
邮箱地址:wtao219@qq.com
THE END
分享
二维码
< <上一篇
下一篇>>