代码之家  ›  专栏  ›  技术社区  ›  paintcan

用Java- jar运行Scala应用程序

  •  32
  • paintcan  · 技术社区  · 15 年前

    我在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!
    

    很酷,对,但是这个怎么样:

    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
    

    见鬼去吧?你知道为什么第一个有效而不是第二个吗?我该怎么打我的scala??

    我先谢谢你,兄弟。

    4 回复  |  直到 6 年前
        1
  •  38
  •   Michał Kuliński Patrice Peyre    10 年前

    如果定义-jar,则忽略-classpath:

    Java manual:

    -jar使用此选项时,jar文件是所有用户的源 类和其他用户类路径 设置被忽略。

    您可以在 Manifest metadata .

    启动应用程序的最简单方法是使用scala脚本:

    scala -classpath target/scaaaaaaaaala-1.0.jar scaaalaaa.App Hello World!
    
        2
  •  4
  •   Community CDub    8 年前

    对于可执行JAR,类路径应该在JAR的清单中。要获得帮助,请查看 Stackoverflow: How to create an executable jar with dependancy jars .

        3
  •  4
  •   hgrey    9 年前

    简单运行

    scala scaaaaaaaaala-1.0.jar 
    

    在2.11.6中为我工作

        4
  •  0
  •   Nilesh Shinde    6 年前

    下面是执行scala可执行jar的方法

    • 我们需要在您的系统中安装scala。

    • 这里首先给出jar路径和jar名称

    • 如果您的代码需要任何依赖jar,那么将所有jar保存在一个目录中,并在命令中在“:”后面提供一个这样的路径。

    • 最后给出类/对象的名称。

    scala-cp“/your/jar/path/jar\name.jar:/your/dependency/jar/path/*” 采样码

    推荐文章