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

如何在sbt中编译多个不同的jar文件

夏经武
2023-03-14

我在sbt中有一个项目,希望编译多个jar,这些jar都包含一个不同的主类,可以提交给spark。由于这种jar非常多,并且大多数jar都有一些共同的依赖项,因此不方便将它们拆分为不同的子项目。所有这些主类源文件都位于同一目录中,例如src/main/scala/com下。xx。yy。那么如何编写构建。sbt将所有主类编译成不同的JAR或按主类的名称编译,就像编译不同的子项目一样。请帮忙,sbt很难使用,我找不到任何关于这个的文档。非常感谢。

共有1个答案

莫誉
2023-03-14

如果我理解正确的话,您的src文件夹中有许多主类。您希望能够从一个jar的spark submit中运行它们。那么答案是:

  1. 您不需要为每个主类创建不同的JAR
  2. 只是不要在构建中定义任何“mainClass”。sbt文件,并用所有这些类构建一个普通的jar。(输出将是一个jar,其中包含您的所有类、多个主类以及其他可重用的类和库)
  3. 使用这个jar进行spark提交时,可以使用“-class”标记指定希望spark作业运行的主类,并运行所需的特定主类/应用程序
 类似资料:
  • 问题内容: 我针对javaee-api编译了程序。但是,对于Junit测试,我必须使用特定的实现(例如glassfish的javaee.jar)来避免类似java.lang.ClassFormatError的错误:类文件javax / persistence / Persistence中不是本机或抽象的方法中的缺少Code属性(另请参见1)。 因此,请避免使用仅在glassfish实现中可用的方法

  • 我尝试使用以下命令编译2个jar文件和4个java源文件: javac-classpath junit-4.12.jar jar2.jar 1.java 2.java 3.java 4.java 但是,我得到以下错误:

  • 我们不允许对书籍、工具、软件库等寻求建议的问题。您可以编辑问题,以便用事实和引文来回答。 有谁知道一个免费的反编译器可以反编译整个Jar文件而不是单个类?我对name$1这样的子类有问题。类名$2。类名。班

  • 试图编译多文件包。需要通过进行编译,同时通过一个文件同时编译所有其他文件(大约4个其他.Java文件)?我已经尝试使用了extend和等语句。 我使用了不同的编译方法和参数,但尝试只插入和 摘要:试图一次编译多个Java文件,通过Java编译单个文件。 主文件的当前代码:

  • 所有使用指南都显示了如何在单个 JAR 文件上运行。但我相信大多数项目通常在类路径上使用多个JAR(例如Gradle默认方式)。如何告诉本机映像将它们全部捆绑到一个可执行文件中?