我遇到了java的一些问题.看看这个.
sebastian@sebastian-desktop:~/scaaaaaaaaala$ java -cp /home/sebastian/.m2/repository/org/scala-lang/scala-library/2.8.0.RC3/scala-library-2.8.0.RC3.jar:target/scaaaaaaaaala-1.0.jar scaaalaaa.App
Hello World!
Run Code Online (Sandbox Code Playgroud)
这很酷,对,但这有什么结果:
sebastian@sebastian-desktop:~/scaaaaaaaaala$ java -cp /home/sebastian/.m2/repository/org/scala-lang/scala-library/2.8.0.RC3/scala-library-2.8.0.RC3.jar -jar target/scaaaaaaaaala-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
Run Code Online (Sandbox Code Playgroud)
哎呀?知道为什么第一个工作而不是第二个?我怎么 - 我的scala?
先生,谢谢,兄弟.
Tho*_*ung 42
如果定义-jar,则忽略-classpath:
-jar使用此选项时,JAR文件是所有用户类的源,并忽略其他用户类路径设置.
您可以在Manifest元数据中定义类路径依赖项.
启动应用程序的最简单方法是使用scala脚本:
scala -classpath target/scaaaaaaaaala-1.0.jar scaaalaaa.App Hello World!
Run Code Online (Sandbox Code Playgroud)
使用sbt-assembly
sbt 插件生成包含所有依赖项的jar
例如添加一行project/plugins.sbt
:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.10")
调整你的build.sbt
例如
mainClass in (assembly) := Some("mypackage.mysubpackage.MyMainClass")\nassemblyJarName in assembly := "my_assembly.jar"\n
Run Code Online (Sandbox Code Playgroud)\n\n然后构建你组装的罐子
\n\nsbt assembly
并启动它
\n\njava -jar ./target/scala-2.12/my_assembly.jar
等瞧\xc3\xa0,不再需要这个和那个类路径了。只有 1 罐。
\n只需运行
scala scaaaaaaaaala-1.0.jar
Run Code Online (Sandbox Code Playgroud)
适用于我2.11.6