我有一个Scala应用程序,可通过命令java -jar myapp.jar
使用uber jar在JVM上成功运行。我需要创建一个单独的但相关的Scala作业,该作业使用与第一个相同的对象/函数/依赖项,这使其成为保存在相同代码存储库和uber jar中的不错的选择。请注意,这些Scala作业不使用Spark,因此spark2-submit
不可行。
问题:如何在JVM上的同一uber jar中运行2个单独的Scala作业? (我正在使用Scala 2.11.8和SBT进行jar组装)
其他上下文:
[我已经研究了有关StackOverflow的讨论,即有关使用this post和java -cp myapp.jar MyClass
指定Java类的this post,它们仅提出了使用scala -classpath myapp.jar MyClass
运行Scala等效项的解决方案。
虽然scala -classpath
解决方案可能适用于第二个链接讨论的OP,但我将代码部署到没有scala
或sbt
可执行文件的环境中,而该环境仅具有java
的可执行文件。
假设这些是我要运行的2个Scala作业:
// MyClass.scala
package mypackage
object MyClass {
def main(args: Array[String]): Unit = {
println("Hello, World!")
}
}
// MyClass2.scala
package mypackage
object MyClass2 {
def main(args: Array[String]): Unit = {
println("Hello, World! This is the second job!")
}
}
有没有一种方法可以使用java -cp myapp.jar MyClass
运行Scala代码?我已经尝试过此操作并收到以下错误:
Error: Could not find or load main class MyClass
我能想到的主要替代方法是创建一个Scala对象,该对象充当主入口点,并使用一个参数来确定要运行的作业。如果可能的话,我想避免该解决方案,但是它将允许我继续使用java -jar myapp.jar
,它一直运行良好。]
我有一个Scala应用程序,该应用程序通过以下命令使用uber jar在JVM上成功运行:java -jar myapp.jar。我需要创建一个单独的但相关的Scala作业,该作业使用许多相同的...
您需要为App
实例使用标准名称: