我有一个用SBT编译/打包/运行的项目,但是当我用Scala从命令行调用jar时,我会得到一个'java.lang.ClassNotFoundException'。
build.sbt:
name := "coloring"
version := "0.1"
scalaVersion := "2.12.5"
libraryDependencies ++= Seq("org.scala-graph" %% "graph-core" % "1.12.5")
[info] Compiling 1 Scala source to /path/to/dir/coloring/target/scala-2.12/classes ...
[warn] there was one feature warning; re-run with -feature for details
[warn] one warning found
[info] Done compiling.
[info] Packaging /path/to/dir/coloring/target/scala-2.12/coloring_2.12-0.1.jar ...
[info] Done packaging.
[info] Running Main
[success] Total time: 6 s, completed May 21, 2018 12:55:19 PM
java.lang.ClassNotFoundException: scalax.collection.GraphBase$InnerNode
这里会出什么问题?为什么SBT run
可以工作,但是当您直接调用jar时,它会失败?
编辑:我使用sbt-assembly解决了这个问题,但是(1)我认为这不是必要的,(2)在过去的类似项目中,我使用了完全相同的build.sbt和library/imports/etc,当从命令行调用时,项目就可以工作了。
您使用的库需要在Java类路径中。如果不想使用assembly将依赖库包含到fat jar中,则需要以其他方式将它们添加到类路径中。例如,通过命令行:
java -cp yourApp.jar:somelib.jar:someotherlibjar your.main.Class
java -cp yourApp.jar:libs/* your.main.Class
我使用Gradle构建了一个jar文件。它在“Gradle Run”中运行得很好,但是当我在Eclipse中运行它时(运行->外部工具->外部工具配置),我在一个Spring类上得到了NoClassDefoundError。 这是大楼。格雷德尔: 我查看了jar文件,它没有依赖的jar,这就是为什么在Eclipse中运行时出现NoClassDefinition错误的原因。我也尝试过在本地包含这些J
我有一个Java8/Spring Boot/Maven应用程序,可以在IntelliJ IDE中运行。当我点击绿色箭头(右上角)时,控制台显示,一切都没有问题地启动,我可以在浏览器中使用应用程序,通过curl点击endpoint等。 有什么好看的吗?我需要设置一些不同的/特殊的东西来使调试工作吗?提前谢了。
问题内容: Spring Boot的首选部署方法是通过其中包含tomcat的可执行jar文件。 它从简单开始。 现在,我想将该jar部署到EC2上的linux服务器上,是否丢失了某些东西,还是真的需要创建一个初始化脚本来正确地将应用程序作为守护程序启动? 如果我只是简单地调用,则应用程序在注销时死亡。 我可以在屏幕或nohup中启动它,但这不是很优雅,并且在服务器中重新启动会迫使我登录并手动启动该
Spring Boot的首选部署方法是通过内部包含tomcat的可执行jar文件。 它由一个简单的开始。 现在,我想将jar部署到EC2上的linux服务器上,是我遗漏了什么,还是我真的需要创建一个init脚本来正确地启动应用程序作为守护进程? 如果我只是调用,那么当我注销时,应用程序就会死亡。 我可以在screen或nohup中启动它,但这不是很好,在服务器中重新启动会迫使我手动登录并启动进程。
spring boot可运行的jar文件是针对生产环境的,是针对生产所需的任何优化,还是针对测试/原型设计,我们应该在生产机器的应用服务器上生成和部署WAR文件?
我已经在NetBeans中创建了一个Java项目,自动构建的分发文件(.jar)在我的Ubuntu15.04AMD64机器上运行得非常好。 我想在发布它之前确保它在windows上运行,但在windows 7 32位机器上测试后,我发现它不工作。下面是错误消息的屏幕截图。 我可以猜到一些问题--因为它谈到了一个。regex错误。我并没有在代码中真正使用regex,而是使用string.split。