Weblogic报错:java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setEntityExpansi

描述:项目在 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"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app http://www.bea.com/ns/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
    <container-descriptor>
        <prefer-web-inf-classes>true</prefer-web-inf-classes>
    </container-descriptor>
</weblogic-web-app>

重启 Weblogic 即可。