【问题标题】:Workarounds for using apache poi 3.9 with JDK 4将 apache poi 3.9 与 JDK 4 一起使用的解决方法
【发布时间】:2014-06-27 19:49:26
【问题描述】:

这是一个后续问题here。我刚刚在Apache POI website 找到了这个标题。

POI 3.5 及更高版本需要 JDK 1.5 或更高版本。 3.5 之前的版本需要 JDK 1.4+

显然,这就是我无法构建 Java 程序的原因。我想知道是否有任何解决方法可以让我使用当前设置在 Ant 中成功构建我的项目。

设置

  • Apache POI - 3.9
  • JDK - 1.4.2 (4.0)

欢迎任何建议、提示或技巧。提前致谢!

【问题讨论】:

  • 嗨 dimas,为什么你不能迁移到更新版本的 JDK?
  • 因为它是公司当前使用的 JDK。

标签: java apache-poi


【解决方案1】:

Java 1.4 现在已经很老了——它是在 2002 年发布的,所以在 10 多年前。常规支持于 2008 年结束,所以我不敢想您需要向 Oracle 支付多少费用才能获得延长支持...如果可能的话,将部分现金转用于升级项目!

Apache POI 在 Java 1.4 上运行的最后一个版本是 POI 3.2,于 2008 年 10 月发布。它的源代码和二进制包可从the Apache dist archive 获得。今天使用 POI 3.2 有两个主要障碍,第一个是它只支持二进制文件格式。它不支持 .xlsx、.pptx、.docx 等 OOXML 格式。对这些(通过 XSLF、XSSF 和 XWPF)的支持仅在 POI 3.5 中引入,并且至少需要升级到 Java 5。第二个问题是你会错过5 years of bug fixes and new features,其中有很多!

自从有人询问旧 JDK 上的新版本 Apache POI 以来已经有几年了(其他人都设法升级到具有正常支持的东西!)。当人们询问时,一个常见的答案是尝试Retroweaver,它应该可以让您在 JDK 1.4 上加载和运行 JDK 5 代码。我自己没有尝试过,但给出这个答案的人似乎很高兴,所以我认为它会成功......

(将 POI 3.9 转换为在 JDK 1.4 上运行对您来说将是很多工作。自 3.2 天以来,大部分新代码都使用了泛型,许多旧代码通过转向泛型得到了极大的整理和简化,我认为有一些奇怪的 varags,一些关于日期格式化程序的东西敲响了警钟,还有所有 XML 的东西。可以做到,但不会很快)

【讨论】:

  • 我在大约 2-3 年前尝试将 Retroweaver 与 POI 一起应用,但我始终无法让它发挥作用。可能他正在为一些只安装了 Netweaver 7.0x 的 SAP 商店工作。这仅在 Java 1.4 上运行,并且仍受 SAP 支持。
  • 感谢您的 cmets Gagravarr,我无法控制将 java 版本升级到公司拥有的较新版本。我唯一能做的可能就是使用retroweaver、Jbossretro 或retrotranslator……无论哪个有效……确实有很多工作。
【解决方案2】:

我想这很难。举个例子=>假设POI 3.9正在使用Genericsvarargs的特性jdk 1.5,那么你怎么能用jdk 1.4编译它。我建议您将您的 POI 版本降级或升级您的jdk 版本。

编辑: 添加 maven 依赖项添加对 POI 3.2 的支持,如下代码所示

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.2-FINAL</version>
</dependency>

【讨论】:

  • 我无法升级我的 JDK 版本...我可以降级我的 POI 库,但会有很多代码更改,更不用说 poi-3.2 是否支持 xlsx 格式
  • 你说得对。严重的是,这是决策和设计时间问题。这种决定应该在项目开始之前做出。
  • 是的,你是对的,但我实际上对此进行了研究,但还不够详尽,因为我没有看到这部分。无论如何,这个项目并不是那么大(企业大)。但仍有很多代码更改要做。你知道我在哪里可以下载 poi-3.2 吗?我用谷歌搜索了它,但它只包含一个文件。
  • 如果你降级,那就是代码变化,有很多风险,比如降级的POI是否支持xlsx格式。如果它不支持,那么您将不得不妥协您的功能,这将为您的项目增加限制。我添加了 Maven 依赖项。
  • 我实际上将其包含在我的主要问题中,但有人对其进行了编辑...无论如何感谢您指出。这是我关心的问题之一……这个问题需要破解……
【解决方案3】:

我使用了Poi 3.8 migrated to jdk 1.4。它有效:-)

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多