Я хочу создать большой файл Jar. для которого я пытаюсь использовать SBT ASSEMBLY. Я установил sbt-assembly из GitHub и этот ответ. Когда я запустил sbt assembly
, я получил эту ошибку:
java.lang.RuntimeException: deduplicate: different file contents found in the following:
/home/UserName/.ivy2/cache/org.eclipse.jetty.orbit/javax.servlet/orbits/javax.servlet-2.5.0.v201103041518.jar:javax/servlet/SingleThreadModel.class
/home/UserName/.ivy2/cache/org.mortbay.jetty/servlet-api/jars/servlet-api-2.5-20081211.jar:javax/servlet/SingleThreadModel.class
Чтобы решить эту проблему, я следил за страницей пользователя README, и это код, который он предлагает.
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
{
case PathList("org", "apache", xs @ _*) => MergeStrategy.last
case PathList("javax", "servlet", xs @ _*) => MergeStrategy.last
case PathList("com", "esotericsoftware", xs @ _*) => MergeStrategy.last
case PathList("project.clj") => MergeStrategy.last
case PathList("overview.html") => MergeStrategy.last
case x => old(x)
}
}
Даже после добавления этого кода я получаю ту же ошибку, о которой говорилось ранее. Пожалуйста, дайте мне знать, что мне не хватает. Любая помощь по этой ошибке будет оценена по достоинству. Спасибо!
Обновление 2:
Добавлено правило исключения по указанной ссылке,
libraryDependencies ++= Seq("org.apache.spark" %% "spark-core" % "0.8.0-incubating","com.codahale" % "jerkson_2.9.1" % "0.5.0","org.skife.com.typesafe.config" % "typesafe-config" % "0.3.0").map(_.exclude("javax", "servlet"))
Обновление 3:
Я могу найти библиотеку, которая вызывает проблему.
| +-org.apache.avro:avro-ipc:1.7.4
| | +-io.netty:netty:3.4.0.Final (evicted by: 3.5.4.Final)
| | +-io.netty:netty:3.5.4.Final
...
...
| | +-org.mortbay.jetty:jetty-util:6.1.26
| | +-org.mortbay.jetty:jetty:6.1.26
| | | +-org.mortbay.jetty:jetty-util:6.1.26
| | | +-org.mortbay.jetty:servlet-api:2.5-20081211
| | |
| | +-org.mortbay.jetty:servlet-api:2.5-20081211
| | +-org.slf4j:slf4j-api:1.7.2
...
...
| +-org.eclipse.jetty:jetty-server:7.6.8.v20121106
| | +-org.eclipse.jetty.orbit:javax.servlet:2.5.0.v201103041518
Обновление 4: исправление
Поэтому добавление MergeStrategy действительно решило проблему. Несмотря на то, что у меня было довольно много зависимостей, более 10, добавление MergeStrategy для каждой из них по отдельности решило проблему.