【问题标题】:java class reference issue between two jars两个jar之间的java类引用问题
【发布时间】:2013-06-19 06:48:03
【问题描述】:

我有一个 java 类来处理 XLS 文件并使用 apache poi jar (poi-ooxml-3.8-20120326.jar) 来执行此操作。我最近还部署了 BIRT jar 来生成一些报告。从这里开始,当我调用我的 java 类进行 XLS 处理时,出现以下错误。

java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.WorkbookFactory.create(Ljava/io/File;)Lorg/apache/poi/ss/usermodel/Workbook;

我发现 'WorkbookFactory' 类在 BIRT 相关的 jars (org.eclipse.birt.runtime_4.2.1.v20120918-1113.jar) 中也可用,并且指定的方法在这个 jar 中不可用。这可能会导致上述异常。

如何通过在服务器中部署 jars(POI 和 BIRT)来解决此问题。

【问题讨论】:

  • 您使用的是哪个版本的 BIRT 和 POI?
  • 如果您重新安排您的类路径以首先在 POI jar 中查找类(只需在类路径声明中提及 BIRT jar 之前提及它),此问题可能会得到解决。当然,我假设它不会在预期 BIRT 类时使用 POI 类引入进一步的冲突。
  • 你能不能得到一个更新版本的 BIRT,它使用你想要使用的相同版本的 POI?
  • 试图从 BIRT 中删除 poi 包?
  • @SayemAhmed;正在从 BIRT jar 中删除 POI 相关类,而不是更改类路径详细信息或使用 Java URI 类从特定 jar 加载类文件。似乎 BIRT 4.3 将与 POI 3.9 一起提供完整的解决方案。但是我等不及了。因此从 BIRT jar 本身中删除 POI 文件。

标签: java apache-poi birt


【解决方案1】:

我使用 POI 3.9 的 BIRT 4.4 遇到了同样的问题,而我使用的是 POI 3.13。

当我使用 Maven 时,我只是在 Maven 依赖项部分使用了“排除 Maven Artifact”,以在不影响整体 BIRT 依赖项的情况下摆脱旧版本的 POI。

我希望这不会影响 BIRT 的完整性。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多