IntelliJ Scala插件中Scala 3项目Main.main启动报错:找不到主类
Scala 3 + IntelliJ: 解决"Could not find or load main class" 启动异常
问题现象
在IntelliJ 2024.1.1(搭配Scala插件2024.1.20)环境下创建Scala 3.3.3项目,使用无大括号语法编写以下代码时,启动会报错Could not find or load main class org.public_domain.main:
package org.public_domain object Main: @main def main(): Unit = println("Hello World!")
点击main方法左侧的绿色运行箭头选择"Run org.public_domain.main",执行直接失败;但注释掉object Main:后,以下代码可正常运行:
package org.public_domain @main def main(): Unit = println("Hello World!")
问题原因
- 该代码在Scastie中可正常执行,说明问题出自IntelliJ Scala插件的兼容性问题
- 核心诱因是Windows/macOS系统的大小写不敏感文件系统:当
object的名称(Main)与标记@main的方法名(main)在大小写不敏感规则下名称重合时,会触发类加载冲突,导致找不到主类的异常
解决方案
只需修改以下任一内容即可解决问题:
- 将
@main标注的方法重命名为其他名称,例如:package org.public_domain object Main: @main def run(): Unit = println("Hello World!") - 或者将外层
object的名称重命名为其他名称,例如:package org.public_domain object AppMain: @main def main(): Unit = println("Hello World!")
内容的提问来源于stack exchange,提问作者chaotic3quilibrium
相关产品推荐
相关产品推荐

