解析 "Multiple Jar files" 又名 "scanned from multiple locations"
Resolving "Multiple Jar files" aka "scanned from multiple locations"
我正在做一个码头服务,当启动它时,我得到了很多:
SomeClass scanned from multiple locations: jar: jar1!Someclass.class, jar2!Someclass.class
所以一个 class 是由两个 jar 提供的,而我在运行时得到的是未定义的,这不好。查看其他问题,我发现 tattletale 可以帮助诊断问题。该报告在 多个 Jar 文件 部分中列出了与 Jetty 启动时相同的 classes 以及它们所在的 jar。
冲突的一个子集是:
正在看
mvn dependency:tree -D verbose
我得到:
+- ca.uhn.hapi.fhir:hapi-fhir-jpaserver-base:jar:3.7.0:compile
| | ...
| +- org.jscience:jscience:jar:4.3.1:compile
| | \- org.javolution:javolution:jar:5.2.3:compile
所以我的 fhir-base-jpaserver-base 依赖项似乎拉动了 jscience,它拉动了 javolution。但是 jscience 和 javolution 提供了一些相同的 classes。不存在对 javolution 的其他依赖。
那么我的问题是,我该如何解决这个问题?
我可以在 pom.xml 中做一些事情,但我想 jscience 需要 javolution,并且可能会中断?
听起来像是 jscience
中关于他们如何打包 jar 的错误,可能想向他们提出问题。
他们应该...
- 有一个 proper/focused jar 和依赖项。
- 或没有依赖项的独立 uber jar。
不要混淆这两个概念。
同时,只需使用 <dependency>/<exclusions>
排除导致重复的特定传递依赖项 类。
另外,您可能想要 运行 各种重复的 class/resource 检查器 Maven 插件中的任何一个,以查找您可能在项目中出现的任何其他案例。
我正在做一个码头服务,当启动它时,我得到了很多:
SomeClass scanned from multiple locations: jar: jar1!Someclass.class, jar2!Someclass.class
所以一个 class 是由两个 jar 提供的,而我在运行时得到的是未定义的,这不好。查看其他问题,我发现 tattletale 可以帮助诊断问题。该报告在 多个 Jar 文件 部分中列出了与 Jetty 启动时相同的 classes 以及它们所在的 jar。 冲突的一个子集是:
正在看
mvn dependency:tree -D verbose
我得到:
+- ca.uhn.hapi.fhir:hapi-fhir-jpaserver-base:jar:3.7.0:compile
| | ...
| +- org.jscience:jscience:jar:4.3.1:compile
| | \- org.javolution:javolution:jar:5.2.3:compile
所以我的 fhir-base-jpaserver-base 依赖项似乎拉动了 jscience,它拉动了 javolution。但是 jscience 和 javolution 提供了一些相同的 classes。不存在对 javolution 的其他依赖。
那么我的问题是,我该如何解决这个问题?
我可以在 pom.xml 中做一些事情,但我想 jscience 需要 javolution,并且可能会中断?
听起来像是 jscience
中关于他们如何打包 jar 的错误,可能想向他们提出问题。
他们应该...
- 有一个 proper/focused jar 和依赖项。
- 或没有依赖项的独立 uber jar。
不要混淆这两个概念。
同时,只需使用 <dependency>/<exclusions>
排除导致重复的特定传递依赖项 类。
另外,您可能想要 运行 各种重复的 class/resource 检查器 Maven 插件中的任何一个,以查找您可能在项目中出现的任何其他案例。