【问题标题】:Exporting Scala project as jar from Eclipse从 Eclipse 将 Scala 项目导出为 jar
【发布时间】:2012-07-09 23:07:17
【问题描述】:

我有一个 Scala 项目,我想将其导出为 jar。

*1。一开始我尝试为项目创建一个Java类作为入口点

public class JMain {
 public static void main(String[] args) {
  System.out.println("Java main calling Scala main");
  SMain.main(new String[] {""}); //SMain.main is the actual *main*

当从 Eclipse 启动时,它工作得很好而且很花哨,但是当我将它导出为 jar 时,它会给我大约 18 个异常。我现在确实知道如何复制 Eclipse 设法启动它的“环境”,我很确定它依赖于 Scala 已经在我的系统上的事实——我需要一个包含所有东西的独立 jar。

*2。我的第二次尝试包括尝试 lach 在这里建议的 How to deploy a Scala project from Eclipse? 即:

public class JMain {
 public static void main(String[] args) {
  System.out.println("Java Main");
  List<String> argList = new ArrayList<String>();
  argList.add("fully.qualified.ClassName"); //???
  for (String s : args) argList.add(s);
  scala.tools.nsc.MainGenericRunner.main(argList.toArray(new String[0]));

这一次它甚至不会从 Eclipse 中运行,尽管它只给出了以著名的 NoClassDefFoundError 开头的 6 个左右的异常。我有一种感觉,我没有得到正确的 fully.qualified.ClassName。 *3。如果 main Scala 类被称为“Dis.scala”并且位于包“pack”中,那么这个 fully.qualified.ClassName 不应该是“pack.Dis”吗?

我正在使用 Jre 1.6 和 Scala 2.9.2 编辑:我已经包含了所有外部导入的罐子,甚至是 scala-library.jar - 一切都很好并且装在罐子里

附:我不熟悉 Ant、Maven 或 Sbt。我只想让我的 Scala 项目 jared - 如果可能的话,不要涉及到毛茸茸的事情。

【问题讨论】:

  • 从长远来看,您可能会发现在前期投入少量精力来设置 Sbt(或 Maven)构建会更简单,从那时起生活变得非常容易。

标签: java scala compilation


【解决方案1】:

这对我有用: 1.创建scala项目 2.创建Wrapper java项目 3. 将 scala-library.jar 添加到您的 java 项目构建路径。

所以你只需要第三步,因为其余的看起来和我做的很相似。然后就可以愉快的使用了:java - jar file.jar

编辑: 如何使用 Scala - Eclipse IDE 创建一个包含 Scala/代码的 JAR 文件,该文件可由另一个 Java 项目使用。

  1. 创建一个新的 Scala 项目并定义一个带有 main 方法的对象作为入口点。
  2. 现在创建一个新的 Java 项目并将您的 Scala 项目添加到新的构建路径中。此外,将 scala-library.jar 添加到 Java 项目中。
  3. 现在在 java 项目中创建一个 Wrapper 类,该类从 scala 库中调用您的入口点类。运行包装类创建一个eclipse运行配置并测试是否可以调用scala项目。
  4. 使用 Export->Java->Runnable JAR 文件,向导现在在包装器项目上。eclipse 运行配置将用作 JAR 的入口点。根据您的需要,您可能希望: 将所需的库提取到生成的 JAR 中 要么 将所需的库打包到生成的 JAR 中

最后你会得到一个完整的打包 JAR,你可以像这样使用它:

java - jar Wrapped.jar

【讨论】:

  • 您能否详细说明您的答案,以帮助其他人,而不仅仅是原始发帖人?
【解决方案2】:

对我来说,这相对简单。

  1. 使用 scala IDE(或 java 的 eclipse)开发和测试项目。
  2. 准备就绪后,使用文件 -> 导出方法为项目生成 jar。

为了提交 spark(我正在为 spark 写一些东西),我只需要提到 --class 选项来指定 jar 的主类。

希望能提供帮助。

【讨论】:

    猜你喜欢
    • 2013-04-14
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2013-03-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    相关资源
    最近更新 更多