当前位置: 首页 > 知识库问答 >
问题:

Apache POI 5.2.2无法在weblogic server14.1上运行

刘狐若
2023-03-14

我正在进行提升项目,将Apache 412提升到最新的Apache POI 5.2.2版本。在Netbean IDE 12.2中,本地独立程序一切正常。但是当我将它移动到运行在Java8上的服务器WebLogic 14C时,它不起作用。它也没有在日志中给出任何错误。

当我尝试在我的 Jdeveloper 中导出到 Excel 时,我收到错误”

我在JDeveloper中启用了详细的类加载,但它没有给出任何POI特定的错误。

-verbose:class-XX:UnlockDiagnosticVMOptions-XX:LogVMOutput-XX:-DisplayVMOutput-XX:log file = C:\ record . log

我正在使用以下Apache POI JARS

共享资源集合4-4.4.jar 共享资源压缩-1.21.jar
共享资源-io-2.11.0.jar 共享资源-数学3-3.6.1.jar日志4j-api-2.17.2.jar
日志4j-核心-2.17.2.jar poi-5.2.2.jar poi-ooxml-5.2.2.jar
poi-ooxml-full-5.2.2.jar 稀疏BitSet-1.2.jar xmlbeans-5.0.3.jar

在weblgic.xml我有下面的配置。

   <prefer-application-packages>
     <package-name>org.apache.commons.collections4.*</package-name>
     <package-name>org.apache.commons.compress.*</package-name>
     <package-name>org.apache.poi.*</package-name>
     <package-name>org.apache.xmlbeans.*</package-name>
     <package-name>org.openxmlformats.*</package-name>
     <package-name>schemaorg_apache_xmlbeans.*</package-name>
     <package-name>schemaorg_apache_xmlbeans.system.sXMLCONFIG.*</package-name>
     <package-name>schemaorg_apache_xmlbeans.system.sXMLLANG.*</package-name>
     <package-name>schemaorg_apache_xmlbeans.system.sXMLSCHEMA.*</package-name>
     <package-name>schemaorg_apache_xmlbeans.system.sXMLTOOLS.*</package-name>
  </prefer-application-packages>
  <prefer-application-resources>
     <resource-name>schemaorg_apache_xmlbeans/system/sXMLCONFIG/TypeSystemHolder.class</resource-name>
     <resource-name>schemaorg_apache_xmlbeans/system/sXMLLANG/TypeSystemHolder.class</resource-name>
     <resource-name>schemaorg_apache_xmlbeans/system/sXMLSCHEMA/TypeSystemHolder.class</resource-name>
     <resource-name>schemaorg_apache_xmlbeans/system/sXMLTOOLS/TypeSystemHolder.class</resource-name>
  </prefer-application-resources>

我需要在weblogic.xml文件中添加任何配置吗?请告诉我。当API失败时,如何获得更多堆栈跟踪和错误信息。当我调试这个问题时,下面的行失败了,我得到了NoSuchMachodError。

  **workbook = new SXSSFWorkbook(new XSSFWorkbook(), 100, true, true); - this line fails.
  workbook.setCompressTempFiles(true);**

共有2个答案

包修贤
2023-03-14

谢谢,@kevin在这里是我对上述类似问题的回应
创建您的weblogic。如果WEB-INF中没有xml文件,请添加以下代码段

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app
    xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
    <container-descriptor>
        <prefer-web-inf-classes>false</prefer-web-inf-classes>
        <prefer-application-packages>
            <package-name>org.apache.commons.*</package-name>
            <package-name>org.apache.poi.*</package-name>
            <package-name>org.apache.xmlbeans.*</package-name>
            <package-name>org.openxmlformats.*</package-name>
            <package-name>schemaorg_apache_xmlbeans.*</package-name>
        </prefer-application-packages>
    </container-descriptor>
</weblogic-web-app>    
强烨
2023-03-14

我发现这篇文章很有帮助,但是答案不处理对IOUtils.byteArray的新依赖。它会导致这个特定的错误,因为WL附带的公共IO版本不支持此方法。

java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.byteArray(I)[B

下面是我修改的weblogic.xml来说明这一点。我们用Java 11在WL 14上。

<weblogic-web-app
    xmlns="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://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd 
       http://xmlns.oracle.com/weblogic/weblogic-web-app 
       http://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">
    <context-root>xxx</context-root>
    <container-descriptor>
        <prefer-web-inf-classes>false</prefer-web-inf-classes>
        <prefer-application-packages>
            <package-name>org.apache.commons.*</package-name>
            <package-name>org.apache.poi.*</package-name>
            <package-name>org.apache.xmlbeans.*</package-name>
            <package-name>org.openxmlformats.*</package-name>
            <package-name>schemaorg_apache_xmlbeans.*</package-name>
        </prefer-application-packages>
        <prefer-application-resources>
            <resource-name>schemaorg_apache_xmlbeans/system/sXMLCONFIG/TypeSystemHolder.class</resource-name>
            <resource-name>schemaorg_apache_xmlbeans/system/sXMLLANG/TypeSystemHolder.class</resource-name>
            <resource-name>schemaorg_apache_xmlbeans/system/sXMLSCHEMA/TypeSystemHolder.class</resource-name>
            <resource-name>schemaorg_apache_xmlbeans/system/sXMLTOOLS/TypeSystemHolder.class</resource-name>
        </prefer-application-resources>
    </container-descriptor>
    <description>xxx</description>
    <weblogic-version>14.1.1</weblogic-version>
</weblogic-web-app>
 类似资料:
  • 问题内容: 以下代码可在实时站点上运行,但无法在jsfiddle站点上运行。 谁能告诉我为什么它在jsfiddle上不起作用? 在控制台上,它记录:和。 您将代码作为片段嵌入此处时,可以看到该代码的工作原理: 问题答案: 您定义的函数是在onload函数中定义的,因此在它们被引用之前,因为它们是在该函数中定义的,所以只能在该函数中引用它们。您在HTML中将它们称为全局变量。您有三种选择 a)(最简

  • 问题内容: 我在Windows上有一个基本的webserver hello world应用程序,可用于Windows上的nodejs,它可在localhost上运行。但是,当我从互联网测试它时,它无法连接。我在netgear路由器中设置了端口转发。我是否在这里缺少使我的nodejs服务器对外界可见的步骤? 谢谢。 问题答案: 确保您聆听而不是 是仅对您的计算机可见的专用网络。 侦听所有接口,包括私

  • 问题内容: 我正在尝试在Ubuntu终端上运行javac。但是我得到以下信息: JDK已经安装并运行说 我的jdk安装在/ usr / lib / jvm / java-6-open- jdk中;而且我能够从Eclipse编译并运行Java程序。但是在使用终端时遇到了上述问题。 问题答案: 该二进制(可能其他的Java二进制文件)是/不是您的用户环境变量。有几种解决方法: 添加到用户的环境变量。您

  • 问题内容: 所以我最近一直在C9上使用Node.js,并在一个javascript文件中遇到了这个问题: 这是我的代码: 我更新了所有依赖关系以及Node本身,但仍然遇到此问题。有人知道怎么回事吗? 问题答案: 我面临着同样的问题。正在网上寻找解决方案。事实证明,jsdom自v10以来已更新了一些功能。因此,我想在快速应用程序的Node.js端使用jQuery,并且必须像下面这样进行操作: 从v1

  • 根据Maven的发布历史,应该可以在JDK7上运行Maven的任何最新版本(在编写本文时)。但是,当我在Ubuntu21.04机器上尝试这样做时,我得到了一个错误:。 即使在不包含任何Java文件或文件的目录中运行而没有任何参数时也会发生这种情况。 Maven信息: (我还安装了Zulu1.7.292和OpenJDK;那里的行为是相同的。)

  • 我的应用程序在Android 6上崩溃, 调用时,我正在使用带有自定义适配器的改型:方法不工作 问题出在哪里?

  • 我安装mercurial使用sudo apt-get安装mercurial和它安装正确。但是当我运行任何hg命令时,我都会收到以下错误消息- 中止:在中找不到mercurial库3.3.3.2.2-3.2-3.2.2.2-3.2.2-3.2-3.2-3.2-2.2-3.2-3.3.4-4.4.4.4.4/7/7/7/7/7/7/7/7/4.4/7/7/4.3.2.2.2-3.2-3.2-3.2-3