1. HTTP3W博客首页
  2. Java

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、原创文章,作者:诺米,如若转载,请注明出处:https://www.http3w.com/archives/626

2、本站内容若有雷同从属巧合,若侵犯了您的权益,请联系本站删除,E-mail: wtao219@qq.com

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

254007489

在线咨询:点击这里给我发消息

邮件:wtao219@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息