eclipse - Running Scala Jar -


when package scala code jar using eclipse, unable run said jar file. i've got:

    object hello extends app{        println("hello world!")     } 

and:

    public class runner {        public static void main(string[] args) {           hello.main(args);        }    } 

i use eclipse package runnable jar called hello.jar. java -jar hello.jar gives:

exception in thread "main" java.lang.noclassdeffounderror: scala/app @ java.lang.classloader.defineclass1(native method) @ java.lang.classloader.defineclass(classloader.java:634) @ java.security.secureclassloader.defineclass(secureclassloader.java:142) @ java.net.urlclassloader.defineclass(urlclassloader.java:277) @ java.net.urlclassloader.access$000(urlclassloader.java:73) @ java.net.urlclassloader$1.run(urlclassloader.java:212) @ java.security.accesscontroller.doprivileged(native method) @ java.net.urlclassloader.findclass(urlclassloader.java:205) @ java.lang.classloader.loadclass(classloader.java:321) @ sun.misc.launcher$appclassloader.loadclass(launcher.java:294) @ java.lang.classloader.loadclass(classloader.java:266) @ hello.main(hello.scala) @ runner.main(runner.java:4) caused by: java.lang.classnotfoundexception: scala.app @ java.net.urlclassloader$1.run(urlclassloader.java:217) @ java.security.accesscontroller.doprivileged(native method) @ java.net.urlclassloader.findclass(urlclassloader.java:205) @ java.lang.classloader.loadclass(classloader.java:321) @ sun.misc.launcher$appclassloader.loadclass(launcher.java:294) @ java.lang.classloader.loadclass(classloader.java:266) ... 13 more 

your application has dependency on scala runtime libraries. these need available when app run, , not.

there 2 ways fix this:

  1. specify classpath when launch jar - convenient one-off, clunky. run java -jar /path/to/yourapp.jar command line, , add -cp parameter includes path scala library jar.
  2. package scala library jar inside own jar, , modify manifest reference jar (by adding class-path attribute - see here). requires more work build process, means app can launched double-clicking on resulting jar.

Comments

Popular posts from this blog

php - mySql Join with 4 tables -

css - Text drops down with smaller window -

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -