Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java-jar运行scala应用程序_Java_Scala_Jar - Fatal编程技术网

使用java-jar运行scala应用程序

使用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

我在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-桌面:~/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的路径,如下所示“:”

  • 最后给出类/对象的名称
scala-cp“/your/jar/path/jar\u name.jar:/your/dependency/jar/path/*” 样本码


使用
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的情况下运行它。