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:
- specify classpath when launch jar - convenient one-off, clunky. run
java -jar /path/to/yourapp.jarcommand line, , add-cpparameter includes path scala library jar. - package scala library jar inside own jar, , modify manifest reference jar (by adding
class-pathattribute - see here). requires more work build process, means app can launched double-clicking on resulting jar.
Comments
Post a Comment