我想在我的项目中使用scala-xml jar,我对胖罐有以下配置。
在 a previous project 中,我可以使用 XML locally 版本:
lazy val scalaXml = "org.scala-lang" % "scala-xml" % "2.11.0-M4"
但是当我尝试将这个版本与我的胖jar一起使用时,我从部署的jar中得到错误(但是,我的测试仍在我的本地计算机上正常运行):
scala/Product$class: java.lang.NoClassDefFoundError
java.lang.NoClassDefFoundError: scala/Product$class
at scala.xml.NamespaceBinding.<init>(NamespaceBinding.scala:23)
at scala.xml.TopScope$.<init>(TopScope.scala:17)
at scala.xml.TopScope$.<clinit>(TopScope.scala)
at example.models.soap11.SoapEnvelope$.toXML(SoapEnvelope.scala:9)
at example.AWSLambdaRequestHandler.execute(RequestHandler.scala:73)
scala-xml 相关
lazy val scalaXml = "org.scala-lang.modules" %% "scala-xml" % "1.0.6"
错误(TL; DR)
org.scala-lang#scala-library;2.12: not found
[warn] :: org.scala-lang#scala-reflect;2.12: not found
[warn] :: org.scala-lang#scala-compiler;2.12: not found
我已经完成了 issue ,其中推荐的解决方案是 sbt update ,但这并没有解决我的问题。相反,它导致上面的错误消息。
here 项目的 build.sbt 文件似乎在使用
libraryDependencies += ("org.scala-lang" % "scala-compiler" % scalaVersion.value % "test").exclude("org.scala-lang.modules", s"scala-xml_${scalaVersion.value}")
作为测试依赖项。还有其他2个版本:
version := "1.1.0-SNAPSHOT",
mimaPreviousVersion := Some("1.0.6"),
我也尝试了以下配置:
lazy val scalaXml = "org.scala-lang.modules" % "scala-xml_2.12" % "1.0.6"
lazy val scalaXml = "org.scala-lang.modules" %% "scala-xml_2.12" % "1.0.6"
lazy val scalaXml = "org.scala-lang" %% "scala-xml" % "1.0.6"
详细配置和错误消息:
build.sbt(整个文件)
import sbt.Keys.{libraryDependencies, _}
import sbt._
val lambdaVersion = "1.2.0"
val awsVersion = "1.11.22"
val json4sVersion = "3.6.0-M2"
val sttpVersion = "1.1.1"
lazy val scalaXml = "org.scala-lang.modules" %% "scala-xml" % "1.0.6"
lazy val sttp = Seq(
"com.softwaremill.sttp" %% "core",
"com.softwaremill.sttp" %% "json4s"
).map(_ % sttpVersion)
lazy val json4s = Seq(
"org.json4s" %% "json4s-native",
"org.json4s" %% "json4s-ext"
).map(_ % json4sVersion)
lazy val awsLambda = Seq(
"com.amazonaws" % "aws-lambda-java-events",
"com.amazonaws" % "aws-lambda-java-core"
).map(_ % lambdaVersion)
lazy val aws = Seq(
"com.amazonaws" % "aws-java-sdk-core",
"com.amazonaws" % "aws-java-sdk-s3"
).map (_ % awsVersion)
javacOptions ++= Seq("-source", "1.8", "-target", "1.8", "-Xlint")
lazy val root = (project in file(".")).
settings(
inThisBuild(List(
organization := "example",
scalaVersion := "2.12",
version := "0.1.0-SNAPSHOT",
retrieveManaged := true
)),
name := "aws-scala-lambda-test",
libraryDependencies += scalaXml,
libraryDependencies ++= json4s,
libraryDependencies ++= awsLambda,
libraryDependencies ++= aws,
libraryDependencies ++= sttp,
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.3" % Test,
libraryDependencies += "org.mockito" % "mockito-all" % "1.10.19" % Test
)
assemblyJarName in assembly := "my-example.jar"
assemblyMergeStrategy in assembly := {
case PathList("META-INF", _ @ _*) => MergeStrategy.discard
case _ => MergeStrategy.first
}
错误
$ sbt
> update
[info] Resolving org.scala-lang#scala-reflect;2.12 ...
[info] Resolving org.scala-lang#scala-reflect;2.12 ...
[warn] module not found: org.scala-lang#scala-reflect;2.12
[warn] ==== local: tried
[warn] /Users/localuser/.ivy2/local/org.scala-lang/scala-reflect/2.12/ivys/ivy.xml
[warn] ==== public: tried
[warn] https://repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.12/scala-reflect-2.12.pom
[warn] ==== local-preloaded-ivy: tried
[warn] /Users/localuser/.sbt/preloaded/org.scala-lang/scala-reflect/2.12/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn] file:////Users/localuser/.sbt/preloaded/org/scala-lang/scala-reflect/2.12/scala-reflect-2.12.pom
[info] Resolving org.scala-lang.modules#scala-parser-combinators_2.12;1.0.4 ...
[info] Resolving org.mockito#mockito-all;1.10.19 ...
[info] Resolving org.scala-lang#scala-compiler;2.12 ...
[info] Resolving org.scala-lang#scala-compiler;2.12 ...
[warn] module not found: org.scala-lang#scala-compiler;2.12
[warn] ==== local: tried
[warn] /Users/localuser/.ivy2/local/org.scala-lang/scala-compiler/2.12/ivys/ivy.xml
[warn] ==== public: tried
[warn] https://repo1.maven.org/maven2/org/scala-lang/scala-compiler/2.12/scala-compiler-2.12.pom
[warn] ==== local-preloaded-ivy: tried
[warn] /Users/localuser/.sbt/preloaded/org.scala-lang/scala-compiler/2.12/ivys/ivy.xml
[warn] ==== local-preloaded: tried
[warn] file:////Users/localuser/.sbt/preloaded/org/scala-lang/scala-compiler/2.12/scala-compiler-2.12.pom
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: org.scala-lang#scala-library;2.12: not found
[warn] :: org.scala-lang#scala-reflect;2.12: not found
[warn] :: org.scala-lang#scala-compiler;2.12: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn]