2013-03-12 42 views
0

在編譯xml時遇到錯誤。從日誌中我認爲錯誤是與apache poi庫「poi-ooxml-3.9-20121203」和Java版本有關。 我目前正在使用JDK 4和apache poi 3.9。 POI罐子使用apache poi的Java程序3.9在XML構建文件中遇到錯誤

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 

列表

/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 

只要讓我知道如果你需要看到構建文件。 任何人都可以告訴我我需要做什麼來解決這個問題。謝謝

+0

這個錯誤意味着POI3使用JDK 5編譯,並嘗試與JDK 4.使用它,它不會起作用。 – longhua 2013-03-12 03:18:10

回答

4

49.0和48.0是類文件格式的版本號。該錯誤消息意味着POI-3.9已編譯爲JDK 5類文件格式,並且您試圖將其與JDK 4一起使用。當然,JDK 4無法支持JDK 5類文件格式。我認爲你可以嘗試舊版本的POI。或者只是使用JDK 5.

1,從POI 3.5開始,它需要JDK 1.5。所以你可以使用POI 3.4。請參閱此帖:Apache POI JDK version

2,有人已經將POI 3.8遷移到JDK 1.4。檢查Apache POI (3.8 final) migrated to JDK 1.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十六進制)

參考文獻:Java class file

+0

謝謝lhuang,atm我無法改變jdk的那一刻。那麼這是否意味着我不能在jdk 4中使用poi 3.9?我需要使用低版本的poi? – dimas 2013-03-12 04:09:10

+0

@dimas更新了答案。如果您有時間,可以將poi 3.9遷移到jdk 4。 – longhua 2013-03-12 04:39:58

+0

我該怎麼做? – dimas 2013-03-12 04:58:13

相關問題