我有一个用于构建J2EE应用程序并创建jar文件的ant脚本。问题如下:运行应用程序需要两个jar文件。
commons-math-2.0.jar
commons-math-1.0.jar
但是,我想只使用2.0作为应用程序内部的特定包,其余的应用程序使用1.0。如何构建应用程序以仅使用2.0版本,例如com.naurus.eventhandler.risk等软件包名称?我再次使用Ant脚本,但是如果有更简单的方法来做这种事我愿意尝试。谢谢!
答案 0 :(得分:2)
如果两个jar包含不同的类/包,那么将它们全部放在应用程序类路径中应该没有问题。因此,不要在另一个包中使用一个jar中的类,这是一个纪律问题。
但是我想这两个罐子里面大多数都是相同的类/方法?有许多方法可以使用相同类的不同版本:
ClassLoader
个实例。我不认为它是“容易”的,远非它意味着打开一堆令人讨厌的错误的大门。 (可以使用像OSGi这样的工具帮助)我不建议使用任何这些方法。 使所有软件包使用相同的版本可能会更简单。这样做有什么特别的困难吗?
答案 1 :(得分:0)
这将是有问题的,因为在部署J2EE应用程序时,两个JAR文件都将在同一个类路径中结束。您可以使用OSGI bundles来实现您尝试尝试的内容,它允许每个包具有单独的依赖项。但是,这是您的应用程序的相对较大的重构。
IMO,最好是:
a)从2.0复制您需要的功能(如果数量很小且许可证允许,例如打包单个类)。
或
b)花时间将整个应用程序升级到2.0
答案 2 :(得分:0)
您可以使用jar中的清单来定义类路径。
http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html
虽然老实说它似乎有点复杂,但这是你的要求。