我正在编写的代码将在仅安装了Java 8运行时的AWS Lambda中运行,因此我需要将scala库包含在我的jar中。当我给它使用sbt-assembly构建的jar时,我会得到java.lang.NoClassDefFoundError: scala/Function3
。
这是我在build.sbt
中使用的程序集插件的全部信息
assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = true)
assemblyMergeStrategy in assembly := {
case PathList("META-INF", _ @ _*) => MergeStrategy.discard
case _ => MergeStrategy.first
}
无论我是否有丢弃META-INF文件的行,这仍然会发生。
我使用brew安装scala,并尝试将$ SCALA_HOME设置为/usr/local/opt/scala/idea
(brew info scala
的小凹坑部分)和/usr/local/bin/scala
(which scala
的输出)>
::编辑::
我打开了罐子的包装,发现其中的类实际上包含在罐子中:scala/Function3_scala-library-2.12.7_scala-library-2.12.7_scala-library-2.12.7.class
答案 0 :(得分:0)
我在Intellij的类路径中添加了scala-library.jar
,删除了目标文件夹并运行了sbt assembly
。