【问题标题】:How to package Scala libraries into runnable jar in Eclipse如何在 Eclipse 中将 Scala 库打包到可运行的 jar 中
【发布时间】:2017-12-17 14:17:10
【问题描述】:

问题

我在使用 Scala 在 Eclipse 中创建可运行的 jar 文件时遇到了一些问题。

在 Eclipse 中,我有一个 Scala 项目,我希望将其制作成可运行的 jar 文件。当我运行 jar 文件时,它找不到 Scala 标准库。

详情

IDE - 我正在使用 Scala IDE 来扩展 Eclipse 以供 Scala 使用。

Setup - 要导出,请右键单击我的项目并向下导航 Export>Runnable Jar File。我选择我的运行配置并将路径设置为我的桌面。我选择了“提取”库处理选项。我的运行配置是选择了我的主类的 Java 应用程序。我的主要课程是用 Java 编写的,而项目的其余部分是用 Scala 编写的。然后我通过 Windows CMD 使用java -jar myjarfile.jar 运行创建 jar 文件。

错误 - 当我运行 jar 文件时,当程序第一次遇到 Scala 标准库类(在我的情况下为 scala.util.Random)时,会抛出 NoClassDefFoundError。该程序可以很好地运行我的 Scala 文件,甚至可以运行我在 Eclipse 下作为项目依赖项添加的另一个项目的文件。当我使用scala myjarfile.jar 运行 jar 文件时,它找不到主类。即使使用scala 确实有效,这也是不可接受的,因为用户可能没有安装任何相关的 Scala。

我在 Stack Overflow 上研究过类似的问题,但都没有奏效。那么如何在我的 jar 文件中访问 Scala 标准库呢?将 Scala 标准库打包到我的 jar 中听起来是个不错的选择,但我不知道该怎么做。

【问题讨论】:

    标签: java eclipse scala jar export


    【解决方案1】:

    使用 SBT 为 Scala 打包可运行 jar 有 2 个选项:

    1. sbt-assembly 将您的类文件打包为 jar,它还将打包Scala 标准库。
    2. SBT Native Packager它可以将类文件打包成一个可运行的包包括:zip,tgz,RPM,DEP,Docker。李>

    【讨论】:

      【解决方案2】:

      使用包装器项目

      创建一个纯 Java 项目并将 main 方法委托给您的核心 Scala 项目。将 Scala 标准库添加到 Java 项目(找到 here)并将其导出。它应该可以完美运行。

      【讨论】:

        猜你喜欢
        • 2011-10-07
        • 2016-03-17
        • 2018-08-03
        • 2015-10-27
        • 2012-08-23
        • 2020-08-05
        • 1970-01-01
        • 2013-03-19
        • 2017-07-30
        相关资源
        最近更新 更多