Ответ зависит от вашей среды и того, чего вы хотите достичь.
JDK 8
У меня была такая же проблема с проектом, использующим JDK 8. JDK 8 не использует файл 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
, скорее всего, создаст банку, которая не будет работать.В этом случае просто зависит от библиотек.