gpt4 book ai didi

sbt - sbt程序集:重复数据删除module-info.class

转载 作者:行者123 更新时间:2023-12-04 06:30:40 26 4
gpt4 key购买 nike

组装我的uber jar时出现以下错误:


java.lang.RuntimeException:重复数据删除:找到不同的文件内容
在以下内容中:[错误]
/Users/jake.stone/.ivy2/cache/org.bouncycastle/bcprov-jdk15on/jars/bcprov-jdk15on-1.61.jar:module-info.class
[错误]
/Users/jake.stone/.ivy2/cache/javax.xml.bind/jaxb-api/jars/jaxb-api-2.3.1.jar:module-info.class


我不了解Java技术,但是假设我不能简单地丢弃这些类之一。

谁能告诉我可以用来安全地编译uber jar的mergeStrategy吗?

最佳答案

答案取决于您的环境和您想要实现的目标。

JDK 8

我在使用JDK 8的项目中遇到了相同的问题。JDK8不使用文件module-info.class,因此可以安全地丢弃该文件。

将以下内容添加到您的build.sbt

assemblyMergeStrategy in assembly := {
case "module-info.class" => MergeStrategy.discard
case x =>
val oldStrategy = (assemblyMergeStrategy in assembly).value
oldStrategy(x)
}


这只是丢弃文件。

JDK 11

如果将JDK 11与最终用户项目(而非库)一起​​使用,则它也应该是安全的,就像创建uber-jar一样,所有类都包括在内,并且不需要外部依赖项。只是通过简短测试对其进行了测试(还不足以说它总是安全的)。

如果您使用JDK 11并创建一个库,那么最好不要创建一个uber-jar。在这种情况下,删除 module-info.class很可能会创建一个无法使用的jar。在这种情况下,仅依赖于库。

关于sbt - sbt程序集:重复数据删除module-info.class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54834125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com