java - Main 方法适用于 java,但不适用于 scala

标签 java scala intellij-idea program-entry-point

我在intellij中有一个模块,我可以在其中在java中创建完美运行的主要方法,但是当我在scala中创建它们并尝试运行它们时,我得到以下结果:

Error: Could not find or load main class xxx

我的项目依赖于 java 和 scala 类。我需要做什么才能允许 scala 主类运行?

编辑:

根据要求,这是我尝试使用 scala 运行的主类的摘录。我知道代码没有任何问题,因为当我将 intellij 中的代码初始化为 scala 项目时它可以工作。这里的问题是我从一个空白项目开始,所以我不知道 magic intellij 在幕后做了什么来使 scala 主类正常运行。

object WebProxyServer extends Logging {

    def main(args: Array[String]): Unit = {

        // implementation

    }

}

class WebProxyServer() {

}

最佳答案

运行 Scala 代码的最简单方法是创建一个扩展 App对象,如下所示:

object Main extends App {
  println("Hello World")
}

Scala 将在创建对象时执行该对象中的所有代码。 (参数在 Appargs 成员中可用)

要从 IntelliJ 运行此程序,请选择“运行 -> 编辑配置”,然后单击“+”并选择“应用程序”并填写对话框。 “Main Class”参数的下拉列表应包含扩展 App 的所有对象,因此请选择您要运行的类。完成此操作后,您的 Main 应出现在“运行”菜单上。

您可以拥有多个扩展 App 的类以及 Run 菜单中的多个项目。我用它来调试 IDE 中代码的特定部分,而无需运行主程序。

<小时/>

您还可以使用 main 方法创建一个对象,如下所示:

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

构建完成后,您可以将 Main 添加为 IntelliJ 中的“主类”,如上所述。所有具有 main 方法的对象也将出现在“主类”下拉列表中。

这两种方法都可以接受,但不要将两者结合起来。也就是说,不要继承 App,然后重写 App 中的 main 方法。

关于java - Main 方法适用于 java,但不适用于 scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54352667/

相关文章:

java - 在 Java 中读取输入流的第一部分

java - EntityManager 数据传输到 mySQL 时出现 UTF-8 编码问题

java - AWS Lambda 和 API 网关以及 SOAP 客户端

java - 从 Main 方法运行 intellij IDEA 插件

java - 将我的对象存储库保留在 Selenium 自动化测试框架中的最佳方法是什么

scala - 在 Scala 中从类型别名创建对象

scala - 是否有更高级别的方法来编写自定义 GraphStage?

Scala 顶级包对象

java - Gradle如何添加VM选项以在javafx 11 idea上运行和部署jfoenix?

scala - 如何关闭 scala "method with accessor like name is empty-paren"的 IntelliJ 警告