使用ApachePOI3.9的Java程序在XML构建文件中遇到错误

使用ApachePOI3.9的Java程序在XML构建文件中遇到错误,java,build,apache-poi,Java,Build,Apache Poi,Hi在生成xml时遇到错误。从日志中,我认为错误在于ApachePOI库“poi-ooxml-3.9-20121203”和Java版本。 我目前正在使用JDK4和ApachePOI3.9 Buildfile: C:\POITest\build.xml init: clean: [delete] Deleting directory C:\POITest\build [delete] Deleting directory C:\POITest\dist

Hi在生成xml时遇到错误。从日志中,我认为错误在于ApachePOI库“poi-ooxml-3.9-20121203”和Java版本。 我目前正在使用JDK4和ApachePOI3.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罐清单

/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
如果需要查看构建文件,请告诉我。
谁能告诉我解决这个问题需要做什么。谢谢

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

1,从POI 3.5开始,它需要JDK 1.5。所以你可以使用POI 3.4。请参阅此帖子:

2.有人已经将POI3.8迁移到JDK1.4。检查。小心使用非官方二进制文件。它可能无法完全测试

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

  • 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十六进制)

参考资料:

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

1,从POI 3.5开始,它需要JDK 1.5。所以你可以使用POI 3.4。请参阅此帖子:

2.有人已经将POI3.8迁移到JDK1.4。检查。小心使用非官方二进制文件。它可能无法完全测试

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

  • 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十六进制)

引用:

此错误意味着POI3是使用JDK 5编译的,您尝试将其与JDK 4一起使用。这个错误意味着POI3是使用JDK5编译的,您尝试将它与JDK4一起使用。这行不通。谢谢黄,我现在不能换jdk了。那么这是否意味着我不能将POI3.9与JDK4一起使用?“我需要使用较低版本的poi?”dimas更新了答案。如果有时间,您可以将poi 3.9迁移到jdk 4。@dimas我检查poi 3.9源代码。它大量使用泛型和注释。所以迁移它可能很困难。是的,我想是的。不管怎样,谢谢你的帮助…我发布了一个关于这个的后续问题。谢谢lhuang,在我无法更改jdk的时候自动取款机。那么这是否意味着我不能将POI3.9与JDK4一起使用?“我需要使用较低版本的poi?”dimas更新了答案。如果有时间,您可以将poi 3.9迁移到jdk 4。@dimas我检查poi 3.9源代码。它大量使用泛型和注释。所以迁移它可能很困难。是的,我想是的。不管怎样,谢谢你的帮助…我正在为此发布一个后续问题。