如何修复错误以及原因:错误:Main 方法在类中不是静态的

问题描述 投票:0回答:1

我收到此错误:

错误:类 oracle.Execution$ 中的 Main 方法不是静态的,请将 main 方法定义为: 公共静态无效主(字符串[] args)

当我运行命令时:

java -jar MyProgram.jar oracle.Execution

但我不明白为什么会发生这种情况。这是我的代码(非常简单)

package oracle

import publish.PublishFile

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

        val reader = OracleReader()

        val SEPARATOR = System.getProperty("file.separator")
        val END_PATH = s"${System.getProperty("user.dir")}${SEPARATOR}testingDumpResults"
        PublishFile().publishThroughFile(END_PATH, reader)

    }

}

我也尝试过,但出现了同样的错误:

object Execution extends App {
        val reader = OracleReader()

        val SEPARATOR = System.getProperty("file.separator")
        val END_PATH = s"${System.getProperty("user.dir")}${SEPARATOR}testingDumpResults"
        PublishFile().publishThroughFile(END_PATH, reader)

}

此外,当我使用 InteliJ 界面运行程序时,它会运行,但我似乎找不到错误的原因。

java scala jar program-entry-point
1个回答
0
投票

看起来您正确地将 Execution 定义为 Scala 对象。但是,当您尝试使用带有 -jar 选项的 java 命令来执行它时,Java 需要一个带有 main 方法的 Java 类,而不是 Scala 对象。

要执行打包在 JAR 文件中的 Scala 程序,您应该使用 scala 命令而不是 java。以下是运行 Scala 程序的方法:

scala -cp MyProgram.jar oracle.Execution
© www.soinside.com 2019 - 2024. All rights reserved.