【问题标题】:How to call main method of a Scala program from the main method of a java program?如何从 java 程序的 main 方法调用 Scala 程序的 main 方法?
【发布时间】:2013-05-16 10:49:55
【问题描述】:

假设我在 Java 项目中有一个 Scala 类和一个 Java 类,而 scala 类如下所示

class Sam {

  def main(args: Array[String]): Unit = {
    println("Hello")
  }

}

如何从同一个项目中存在的 java 程序的 main 方法调用它的 main 方法

【问题讨论】:

  • new Sam().main(javaArgs) 不是在 Java 的主要工作中吗?
  • 它工作正常。非常感谢:)
  • 考虑扩展 App 特征。
  • 是的,考虑一下 App。但是不要考虑应用程序,它已被弃用。
  • 其实也不要考虑App。在App 摆脱DelayedInit 行为之前,您会想知道为什么您的字段没有被初始化。另见stackoverflow.com/q/29133161/169947

标签: java scala


【解决方案1】:

通常,主要方法在 Java 中是 static,在 Scala 中是 object。这允许您从命令行运行它们。您的代码定义了 class,而不是 object

我建议将您的 Scala 代码更改为:

object Sam {
  def main(args: Array[String]): Unit = {
    println("Hello")
  }
}

然后您可以从您的 Java 主方法中调用它,如下所示:

class Foo  {
    public static void main(String[] args) {
        Sam.main(args);
    }
}

【讨论】:

  • 我将项目解压缩到一个 jar 文件中,并尝试从命令行调用 Foo 类。但是,它不起作用!
  • 这可能不起作用的原因有几个。例如,如果类路径设置不正确(您可能会看到 ClassNotFoundException);或者如果命令行上指定的类名不正确(“找不到或加载主类”)。我假设“将项目提取到 jar 中”是指 IDE 功能,所以我想那里也可能存在问题。也许打开一个带有更详细描述的新问题?
猜你喜欢
  • 2014-01-31
  • 2018-05-21
  • 2018-02-03
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 2013-11-28
相关资源
最近更新 更多