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

使用apache poi 3.9的Java程序在XML构建文件中遇到错误

阎啸
2023-03-14

Hi在生成xml时遇到错误。从日志中,我认为错误在于apache poi库“poi-ooxml-3.9-20121203”和Java版本。我目前正在使用JDK 4和apache poi 3.9。

Buildfile: C:\POITest\build.xml
    init:
    clean:
       [delete] Deleting directory C:\POITest\build
       [delete] Deleting directory C:\POITest\dist
    init:
        [mkdir] Created dir: C:\POITest\dist
        [mkdir] Created dir: C:\POITest\build
        [mkdir] Created dir: C:\POITest\dist\lib
    compile:
        [javac] C:\POITest\build.xml:38: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
        [javac] Compiling 1 source file to C:\POITest\build
        [javac] C:\POITest\src\poi\test\TestMain.java:8: cannot access org.apache.poi.openxml4j.exceptions.InvalidFormatException
        [javac] bad class file: C:\POITest\lib\poi3-9\poi-ooxml-3.9-20121203.jar(org/apache/poi/openxml4j/exceptions/InvalidFormatException.class)
        [javac] class file has wrong version 49.0, should be 48.0
        [javac] Please remove or make sure it appears in the correct subdirectory of the classpath.
        [javac] import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
        [javac]                                            ^
        [javac] 1 error

POI JARS列表

/POITest/lib/poi3-9/commons-codec-1.5.jar
/POITest/lib/poi3-9/commons-logging-1.1.jar
/POITest/lib/poi3-9/dom4j-1.6.1.jar
/POITest/lib/poi3-9/junit-3.8.1.jar
/POITest/lib/poi3-9/log4j-1.2.13.jar
/POITest/lib/poi3-9/poi-3.9-20121203.jar
/POITest/lib/poi3-9/poi-examples-3.9-20121203.jar
/POITest/lib/poi3-9/poi-excelant-3.9-20121203.jar
/POITest/lib/poi3-9/poi-ooxml-3.9-20121203.jar
/POITest/lib/poi3-9/poi-ooxml-schemas-3.9-20121203.jar
/POITest/lib/poi3-9/poi-scratchpad-3.9-20121203.jar
/POITest/lib/poi3-9/stax-api-1.0.1.jar
/POITest/lib/poi3-9/xmlbeans-2.3.0.jar

如果您需要查看构建文件,请告诉我。有人能告诉我需要做什么来解决这个问题吗?谢谢

共有1个答案

单于庆
2023-03-14

49.0和48.0是类文件格式的版本号。错误消息表示POI-3.9已编译为JDK 5类文件格式,您试图将其与JDK 4一起使用。当然,JDK 4不支持JDK 5类文件格式。我想你可以试试旧版本的POI。或者只使用JDK 5。

根据POI 3.5,它需要JDK 1.5。所以你可以使用POI 3.4。请参阅本文:Apache POI JDK版本。

2.有人已经将POI 3.8迁移到JDK 1.4。检查迁移到JDK 1.4的Apache POI(最终版本3.8)。小心使用非官方二进制文件。它可能无法完全测试。

正在使用的类文件格式的主要版本号:

  • J2SE 7=51(0x33十六进制)
  • J2SE 6.0=50(0x32十六进制)
  • J2SE 5.0=49(0x31十六进制)
  • JDK 1.4=48(0x30十六进制)
  • JDK 1.3=47(0x2F十六进制)
  • JDK 1.2=46(0x2E十六进制)
  • JDK 1.1=45(0x2D十六进制)

参考:Java类文件

 类似资料:
  • 我正试图在直接在android studio上运行的iOS设备上构建Flitter应用程序,但它提示我以下错误: 正在运行Xcode生成。。。Xcode生成完成 12.7s安装和启动。。。 线程#3,队列='com.apple.root.default-qos',停止原因=信号SIGABRT帧#0:0x000000019096dec4libsystem_kernel.dylib'__pthread

  • 问题内容: 我需要使用这种结构将一些数据库表的内容转储到XML文件中 每个表在未知状态下的真实记录数,因此我无法将单个表的所有数据存储在内存中并转储到XML。 我的工作现在定义为: 这项工作不完整,无法满足我的需求,因为输出看起来像 我认为我必须丰富作家和/或编组人员的组件才能实现我的目标,但我还没有找到继续前进的好方法:( 我的问题是: 如何按照开始时所述构建复杂的XML结构,并使作业完全可重新

  • 我正在尝试部署一个使用mysqlclient模块的flask应用程序。我在requirements.txt文件中添加了“mysqlclient==2.0.3”,但它给了我一个前面提到的错误:希望得到一个解决方案来解决这个问题并部署我的应用程序。 *正在收集mysqlclient==2.0.3下载mysqlclient-2.0.3.tar.gz(88 kB)2021/04/30 14:51:41.3

  • 问题内容: 在将大多数Java独立应用程序部署到生产环境后,它们最终都位于一个类似这样的文件夹中。 我想知道Maven中是否有任何东西可以为我构建该结构并将其放在tar.gz中。 问题答案: 这种部署目录结构非常流行,并已被apache maven和ant等许多出色的应用程序采用。 是的,我们可以通过在maven软件包阶段使用maven-assembly-plugin来实现。 示例pom.xml:

  • 我很难让JavaFX应用程序在IDE之外运行。我正在使用IntelliJ IDEA 2019.3,并使用OpenJDK-12进行编译。JavaFX sdk版本为11.0.2,我使用外部库JFoenix-9.0.8和JSerialComm-2.6.0。操作系统是Windows10,安装了JDK14,我可以运行使用命令行以相同方式构建的非JavaFX应用程序。当我尝试从命令行运行mu JavaFX.j