使用java-jar运行scala应用程序
我在java上遇到了一些问题。看看吧使用java-jar运行scala应用程序,java,scala,jar,Java,Scala,Jar,我在java上遇到了一些问题。看看吧 sebastian@sebastian-桌面:~/scaaaala$java-cp/home/sebastian/.m2/repository/org/scala lang/scala library/2.8.0.RC3/scala-library-2.8.0.RC3.jar:target/scaaala-1.0.jar scaaaaa.App Hello World! 那很酷,对吧,但是这个怎么样: sebastian@sebastian-桌面:~/sc
sebastian@sebastian-桌面:~/scaaaala$java-cp/home/sebastian/.m2/repository/org/scala lang/scala library/2.8.0.RC3/scala-library-2.8.0.RC3.jar:target/scaaala-1.0.jar scaaaaa.App
Hello World!
那很酷,对吧,但是这个怎么样:
sebastian@sebastian-桌面:~/scaaala$java-cp/home/sebastian/.m2/repository/org/scala-lang/scala-library/2.8.0.RC3/scala-library-2.8.0.RC3.jar-jar-target/scaaala-1.0.jar
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Application
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at scaaalaaa.App.main(App.scala)
Caused by: java.lang.ClassNotFoundException: scala.Application
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 13 more
怎么回事?知道为什么第一个有效而第二个无效吗?我如何-jar我的scala
我提前表示感谢,兄弟。如果您定义了-jar,那么-classpath将被忽略: -jar使用此选项时,jar文件是所有用户的源文件 类和其他用户类路径 设置被忽略 您可以在中定义类路径依赖项 启动应用程序的最简单方法是使用scala脚本:
scala -classpath target/scaaaaaaaaala-1.0.jar scaaalaaa.App Hello World!
对于可执行jar,类路径应该在jar的清单中。有关这方面的帮助,请查看。简单运行的答案
scala scaaaaaaaaala-1.0.jar
下面是执行Scala可执行Jar的方法
- 我们需要在您的系统中安装scala
- 这里首先给出jar路径和jar名称
- 如果您的代码需要任何依赖项jar,则将所有jar保留在一个目录中,并在命令中给出该jar的路径,如下所示“:”
- 最后给出类/对象的名称
使用
sbt汇编
sbt插件生成包含所有依赖项的jar
e、 g.在项目/plugins.sbt
中添加一行:
addSbtPlugin(“com.eed3si9n”%sbt组件“%0.14.10”)
调整您的build.sbt
,例如使用
mainClass in (assembly) := Some("mypackage.mysubpackage.MyMainClass")
assemblyJarName in assembly := "my_assembly.jar"
然后用
sbt组件
并用
java-jar./target/scala-2.12/my_assembly.jar
Exception in thread "main" java.lang.NoClassDefFoundError: scala/Application
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at scaaalaaa.App.main(App.scala)
Caused by: java.lang.ClassNotFoundException: scala.Application
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 13 more
等等,没有类路径,这&那是需要的。只有一罐。我更喜欢个人笛卡尔或牛顿。:-)这很好。但我认为问题的动机是,如何在只部署JVM而没有部署Scala或SBT的机器上部署和运行Scala应用程序。所以感觉用
java
运行它并不容易。另外,我的问题是,在目标机器上部署scala是否容易?根据Scala文档,它建议通过SBT运行Scala应用程序,甚至不提如何正确安装Scala本身。那么这里有什么建议?@ThomasJung我不明白这个笑话,请解释一下!这不是问题。当然,您可以使用scala运行它。问题是如何在没有scala的情况下运行它。