【问题标题】:import different version of library in Java with NetBeans使用 NetBeans 在 Java 中导入不同版本的库
【发布时间】:2013-12-21 18:48:43
【问题描述】:

我使用 NetBeans 7.2 作为 IDE、Java 7,但我在使用不同版本的库时遇到了很多问题。

我们将有问题的库称为 Lib(JAR 文件)。

我必须用Java实现一个项目A,它使用包B和包C。现在B依赖于Lib_v1.jar,C依赖于Lib_v2.jar。 Lib_v1 和 Lib_v2 是同一个库的 2 个版本,它们不兼容,但是它们有很多共同的类,因此可以从不同版本的库中加载一个类 图书馆。

我该如何处理这个问题?

【问题讨论】:

  • 如现有答案中所述,如果您的项目 A 必须作为简单应用程序在一台虚拟机中运行,则没有简单的解决方案。如果您的项目可以实现为在两个虚拟机中运行的两个组件,或者如果它的依赖项 B 和 C 可以部署为两个单独的 Web 应用程序,那么 A 可以在以这种方式部署时与它们通信(例如,使用 RESTful方法)你可以摆脱纠结,因为你有机会拥有单独的、独立的类路径。哪种方式最好取决于实际的库和项目。

标签: java netbeans


【解决方案1】:

不幸的是,没有真正的方法可以解决这个问题。即使您将两个 JAR 文件都放入类路径中,也会优先选择另一个。

如果库版本不向后兼容并且进行更改的人没有更改包或其他内容,那么您就很不走运了。

【讨论】:

  • 不幸的是库版本不向后兼容
  • 那你也无能为力了,这两个库互不兼容 :(。尝试找到与新版本或旧版本兼容的 B 的更新版本与旧的兼容。
【解决方案2】:

lib_v2 不向后兼容吗?所以你只能使用 lib_v2.jar 吗?

我看到了一个似乎可以解决您的问题的 googlecode 项目(jar jar),看看:https://code.google.com/p/jarjar/

【讨论】:

  • 不幸的是版本不兼容
  • 你为什么不重新编译 lib_v1.jar,使用不同的包名,比如说从“org.foo”到“org.foo.bar”,你可以使用完全限定名它在 B 中的类
  • 这不是解决方案。它应该作为评论发布。
  • @Borodin 我无法添加评论,因为我的声望少于 50 :(
猜你喜欢
  • 2016-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-04
相关资源
最近更新 更多