Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 部署时,如何在不同的包中包含jar文件_Java_Eclipse_Jakarta Ee_Ant_Build - Fatal编程技术网

Java 部署时,如何在不同的包中包含jar文件

Java 部署时,如何在不同的包中包含jar文件,java,eclipse,jakarta-ee,ant,build,Java,Eclipse,Jakarta Ee,Ant,Build,我有一个ant脚本,用于构建J2EE应用程序和创建jar文件。问题如下:运行应用程序需要两个jar文件 commons-math-2.0.jar commons-math-1.0.jar 但是,我只想对应用程序内部的特定包使用2.0,而应用程序的其余部分使用1.0。如何构建应用程序,使其仅使用2.0版本(例如,包名为com.naurus.eventhandler.risk)?同样,我使用的是Ant脚本,但如果有更简单的方法来做这类事情,我愿意尝试。谢谢 这将是一个问题,因为当您部署J2EE应用

我有一个ant脚本,用于构建J2EE应用程序和创建jar文件。问题如下:运行应用程序需要两个jar文件

commons-math-2.0.jar
commons-math-1.0.jar

但是,我只想对应用程序内部的特定包使用2.0,而应用程序的其余部分使用1.0。如何构建应用程序,使其仅使用2.0版本(例如,包名为com.naurus.eventhandler.risk)?同样,我使用的是Ant脚本,但如果有更简单的方法来做这类事情,我愿意尝试。谢谢

这将是一个问题,因为当您部署J2EE应用程序时,两个JAR文件最终将位于同一个类路径中。您可以实现您试图使用的功能,这允许每个包具有独立的依赖项。然而,这是对应用程序的一个相对较大的重构

在国际海事组织,最好是:

a) 从2.0复制您需要的功能(如果数量较小且许可证允许,例如打包单个类)


b) 花时间将整个应用程序升级到2.0

如果两个JAR包含不同的类/包,那么将它们全部放在应用程序类路径中应该没有问题。因此,不使用另一个包中一个jar中的类是一个纪律问题

但是我猜这两个JAR包含的类/方法基本相同?使用同一类的不同版本有多种方法:

  • 使用不同的
    ClassLoader
    实例。我不会把它称为“容易”,它远不是意味着为一群讨厌的虫子开门。(可以使用OSGi之类的工具进行帮助)
  • 将应用程序分为两个进程,这些进程在同一个Ant目标中启动,并使用任何方式(CORBA、RMI、REST等)进行通信

不过,我不建议使用这些方法中的任何一种让所有包使用相同的版本可能会更简单。这样做有什么特别的困难吗?

您可以使用jar中的manisfest来定义类路径


虽然说实话,这似乎有点复杂,但这是您的要求。

谢谢您的回答。不过我有个问题。commons math似乎是一个ApacheJAR文件。有没有可能我们把两者结合在一起?因为1.0中有一些功能在2.0中不再存在,即已弃用。这就是问题的真正原因……我不确定将这些罐子拆开并组装成一个罐子是否“合法”?如果它们已被弃用,但仍然存在,你可以使用它们。它们可能会在未来的版本中消失。我建议升级到2.0。