SBT SCALA java.lang.ClassNotFoundException: javax.mail.Authe



我有一个SBT Scala项目,它向用户发送包含一些信息的电子邮件。使用IntelliJ运行它一切都很好,但我需要构建项目,放到服务器上并从终端运行。

在第一步中,我使用以下命令来构建项目:

sbt干净编译包

之后,我尝试通过:运行它

scala-target/scale-2.12/project_name_sbt_2.12-0.1.jar

然后我得到错误:

java.lang.ClassNotFoundException: javax.mail.Authenticator
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

它是命令行应用程序,我不使用Tomcat和其他容器。施工简单易行。我有一个主要的类,比如:

object MyApp extends App {new SomeService().run()}

我有类似的build.sbt:

libraryDependencies ++= Seq(
"org.scalatest" %% "scalatest" % "3.0.5" % "test",
"mysql" % "mysql-connector-java" % "5.1.16",
"org.jsoup" % "jsoup" % "1.11.2",
"joda-time" % "joda-time" % "2.10.1",
"org.apache.commons" % "commons-email" % "1.5"
)

你能为我指出解决这个问题的正确方向吗?怎么了?

我通常使用这个插件来创建jar。尝试将其添加到您的plugins.sbt文件中

并运行此命令来创建jar:

sbt "set test in assembly := {}" assembly

然后试着再次运行你的罐子。

感谢Markus Appel、Luis Miguel Mejia Suarez和Mahmoud Hanafy。正如你所建议的,我使用了组装,它对我来说很好。

最新更新