当前位置: 首页 > 知识库问答 >
问题:

使用Java主类从Eclipse执行Scala Jar

沃阳飙
2023-03-14

我试图从Scala项目中创建一个可执行的Jar。因此,我遵循了一个教程。它建议在eclipse中创建一个Java主类,该类调用Scala入口点。当在eclipse中执行时,这可以很好地工作。在添加这个类之后,我能够导出一个可执行的jar。然而,它不适用于

java -jar myjar.jar

我确保在导出时激活“将所需库打包到jar中”。我的Java主类如下所示(其中驱动程序也位于包核心中)

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)

共有1个答案

狄子真
2023-03-14

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

Maven公司:https://code.google.com/p/onejar-maven-plugin/SBT:https://github.com/sbt/sbt-onejar

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

 类似资料:
  • 问题内容: 我有一个罐子,里面装有两个主要的A类和B类。在清单中,我提到了A类。现在,我必须从同一jar执行classB。命令应该是什么。 我不喜欢做两个单独的罐子。 谢谢 问题答案: 这将完成工作:

  • 问题内容: 我有java项目,还有许多具有main方法的类(仅用于测试目的)。当我通过Eclipse创建可执行jar文件时,Eclipse将自动选择哪个文件为主类。(通常是错误的)。 还有一种方法是在清单文件中更改清单文件中的主类。但是,它非常方便。所以,我的问题是:创建Jar文件时如何手动选择此选项。 谢谢 :) 问题答案: Eclipse将设置您要设置的类。该向导具有用于执行此操作的按钮。 菜

  • 问题内容: 我使用eclipse创建可执行jar。它依靠外部其他罐子。 在Eclipse中,只需选择即可。 您可以创建一个可执行jar。它可以在安装了jre的任何地方执行。 但是如果我使用命令行来编译jar。 它可以生成jar。但是jar只能在产生它的目录中执行。如果我将其放入另一个目录或计算机,则会抱怨。 因此,我的问题是,如何使用命令行作为Eclipse生成可执行jar。 问题答案: jar文

  • 问题内容: 我创建了一个maven项目,其中只有一个类可用。我想在此类中使用jnetpcap API。为此,我遵循了带有设置1方法(用户库)的jnet eclipse设置 教程,并创建了一个用户库并将其添加到我的项目中。 JnetTest.java- 此类与jnetpcap经典示例相同 我的系统是Ubuntu 16.10。 我正在使用openjdk版本“ 1.8.0_131”。 库创建步骤- 我下

  • 我有SunOs 5.10 unix服务器,在那里我编写了一个脚本来执行java文件,如下所示 在这个脚本中,有很多代码,其中包括日志文件,以及在导出JAVA HOME之前添加的其他二进制文件类路径。但当我执行时,我得到以下错误 我更改了很多java版本,但都出现了相同的错误

  • 我是(Java/C++/C#)的新手,我也懂Python。我试图用Java创建一个GameEngine,它可以调用Jython脚本,可以访问Java引擎中的方法。 我不知道如何处理这件事。我已经做了几周的研究,没有什么能回答我的问题;即: 如何从由父类执行的JythonScript调用父类中的方法? -------------------------------------------------