2013-05-02 122 views
1

將eclipse導出到.jar的Scala項目中,啓動的應用程序以java -jar app.jar開頭,並且出現錯誤java.lang.ClassNotFoundException: scala.Predef$運行Scala jar時的ClassNotFoundException/NoClassDefFoundError

全輸出:

Exception in Application start method 
Exception in thread "main" java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:490) 
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 
Caused by: java.lang.RuntimeException: Exception in Application start method 
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:829) 
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:56) 
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:150) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.NoClassDefFoundError: scala/Predef$ 
    at main.App$.debug(App.scala:69) 
    at main.App.start(App.scala:23) 
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:772) 
    at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:260) 
    at com.sun.javafx.application.PlatformImpl$5$1.run(PlatformImpl.java:223) 
    at com.sun.javafx.application.PlatformImpl$5$1.run(PlatformImpl.java:220) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:220) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:94) 
Caused by: java.lang.ClassNotFoundException: scala.Predef$ 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:365) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:354) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:353) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:422) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:355) 
    ... 9 more 

的參考線at main.App$.debug(App.scala:69)

object App { 
//... 
    def debug(s: String) { 
     println("DEB: "+s) 
    } 
// ... 
} 

這似乎是因爲Scala的庫未在罐包含被引起的。我該如何解決?

我已閱讀有關maven插件的解決方案,但我更喜歡手動選項。

回答

2

手動推庫有罐中..或者你有很好的選擇,劇本下來

+0

提取'斯卡拉 - library.jar'的內容(即文件夾'scala')並將其添加到應用程序jar的根是解決方案,非常感謝。 – Appleshell 2013-05-02 14:25:20