【问题标题】:Executable Scala Jar from Eclipse using Java main class使用 Java 主类的 Eclipse 中的可执行 Scala Jar
【发布时间】:2023-03-03 04:41:01
【问题描述】:

我正在尝试从我的 Scala 项目中创建一个可执行的 Jar。因此,我遵循了一个教程。它建议在 eclipse 中创建一个 Java 主类,它调用 Scala 入口点。这在 eclipse 中执行时工作正常。添加这个类后,我能够导出一个可执行的 jar。但是,它不适用于

java -jar myjar.jar

我确保在导出时激活“将所需的库打包到 jar 中”。我的 Java 主类是这样的(其中 Driver 也位于包核心中)

package core;

public class Main {
     public static void main(String[] args) {
        Driver.main(args);
    }
}

当执行导出的字符时,会抛出以下错误,我可以调试:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NoClassDefFoundError: scala/collection/Seq
    at core.Driver$.main(Driver.scala:14)
    at core.Driver.main(Driver.scala)
    at core.Main.main(Main.java:5)
    ... 5 more
Caused by: java.lang.ClassNotFoundException: scala.collection.Seq
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)

【问题讨论】:

    标签: eclipse scala jar


    【解决方案1】:

    您可以使用 One-jar 应用程序来保证所有必要的 jar 都在 jarfile 中,我怀疑 scala-lang jar 不在其中或不在命令行的类路径中。

    马文:https://code.google.com/p/onejar-maven-plugin/ SBT:https://github.com/sbt/sbt-onejar

    如果您不使用 maven 或 SBT,我建议您切换到它们,因为它们是 Scala 中主要支持的构建系统

    【讨论】:

    • 我用的是 sbt,不是用 onejar,而是用汇编。它工作得很好,而且很容易设置。但是,我在使用 Maven 时遇到了一些小问题。老实说,我没有那么努力,因为我已经运行了 sbt ;) 我接受你的回答,但是如果其他人能直接回答我的问题,那就更好了!
    猜你喜欢
    • 2012-09-30
    • 2011-12-30
    • 1970-01-01
    • 2014-10-02
    • 2012-12-30
    • 1970-01-01
    • 2013-10-07
    • 2018-08-03
    • 2013-06-13
    相关资源
    最近更新 更多