首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sbt运行正常,但运行jar失败。

sbt运行正常,但运行jar失败。
EN

Stack Overflow用户
提问于 2018-04-13 23:45:37
回答 1查看 208关注 0票数 2

当我逃离sbt的时候

(sbt运行)

我的akka http服务运行良好,但是在使用jar运行时会出现以下错误

(java -jar myservice.jar)

由publishLocal创建

(sbt publishLocal)

代码语言:javascript
复制
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at com.rogers.profileauthn.StartProfileAuthService.<clinit>(StartProfileAuthService.java:15)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

sbt文件中的依赖项如下

代码语言:javascript
复制
val akkaVersion = "2.5.11"
val akkaHttpVersion = "10.0.11"
libraryDependencies ++= Seq(
  "ch.qos.logback" % "logback-classic" % "1.2.3",
  "com.typesafe.akka" %% "akka-http"            % akkaHttpVersion,
  "com.typesafe.akka" %% "akka-stream"          % akkaVersion,
  "com.typesafe.akka" %% "akka-http-jackson"    % akkaHttpVersion,
  "com.typesafe.akka" %% "akka-http-testkit" % akkaHttpVersion % Test,
  "com.typesafe.akka" %% "akka-testkit" % akkaVersion % Test,
  "junit"              % "junit"             % "4.12"          % Test,
  "com.novocode"       % "junit-interface"   % "0.10"          % Test,
  "com.typesafe.play" %% "play-json" % "2.6.9",
  "com.github.swagger-akka-http" %% "swagger-akka-http" % "0.11.0",
  "com.google.inject" % "guice" % "4.1.0",
  "com.google.guava" % "guava" % "18.0",
  "org.mockito" % "mockito-core" % "2.11.0"

)

我正在使用的记录器如下

代码语言:javascript
复制
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
private static final Logger LOGGER = LoggerFactory.getLogger(StartService.class);
    LOGGER.info("**** StartService.createAndStartActorSystem Starts ****");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-14 01:23:50

我认为这是因为jar没有包装您的依赖性。您能尝试使用sbt程序集创建一个胖罐子吗?https://github.com/sbt/sbt-assembly。publishLocal命令用于部署到常春藤存储库,而不是创建这样的jars。(添加插件并运行sbt程序集)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49826486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档