0

我有一个简单的应用程序,使用 netbeans 进行开发,使用 maven 进行构建等。我的应用程序使用 camel ,配置了 spring XML。我想构建一个带有依赖项的可执行 jar,所以我使用带有 'jar-with-deps' 描述符的 maven-assembly 插件。jar 构建良好,但我认为由于所有依赖项都已解包,并且其中一些依赖项在与其他依赖项相同的路径中具有相同的资源,因此它们会相互覆盖。我通过使用 winrar 浏览 jar 来验证这一点,我发现在很多地方都出现了同一个文件。我认为这是无法通过一些简单的 maven 配置来解决的,因为我无法阻止依赖项想要特定路径中的资源,而另一个依赖项也使用它。顺便说一句,该应用程序在 netbeans 内运行正常。我还看到我的应用程序类多次出现。

总而言之,我想知道:

  1. 是否有任何简单的解决方案可以找到此类冲突,如果没有纠正它们,至少要报告它们?(如何)

  2. 我可以告诉归档器(在 maven 中)不要解开 deps,而只是将 jar 包含在父 jar 中,然后将 jar 包含在清单类路径中,以及如何?这会解决问题还是具有相同的结果?

  3. 为什么在同一路径中还会多次出现我的应用程序类?

为了让您了解问题,当前生成的 jar 在使用 WinRAR 查看时,在根路径中有 3 个“log4j.properties”实例,在 meta-inf/ 路径中有 7 个文件“spring.schemas”实例,以命名一些。

4

1 回答 1

1

我认为将所有 .jar 压缩到一个 .jar 中是不可能的。许多这些 .jar 的 .jar 文件(log4j.properties、spring XML 文件)中都有资源,这些资源位于同一文件夹中,因此会有冲突。

最好提供可以通过设置类路径来启动应用程序的启动脚本。我记得在 JDK1.5 或 1.6 中,您可以将文件夹设置为类路径,它将包含该文件夹中的所有 jar。

于 2009-01-18T09:16:56.257 回答