IntelliJ中Maven构建Spark Scala项目找不到主类问题求助
解决IntelliJ中Spark Scala项目主类找不到的问题
1. 确认Scala插件与SDK配置
- 打开
File > Project Structure,检查Global Libraries是否添加对应版本的Scala SDK,且项目模块的Dependencies已引入该SDK。 - 检查Scala插件状态:
File > Settings > Plugins,搜索Scala并确认启用,重启IDE生效。
2. 修复Maven项目结构与编译配置
- 右键
src/main/scala目录,选择Mark Directory as > Sources Root,确保目录标记为蓝色源码根目录。 - 在pom.xml的
<build><plugins>中添加Scala编译插件,否则Maven无法编译Scala代码:
<plugin> <groupId>org.scala-tools</groupId> <artifactId>maven-scala-plugin</artifactId> <version>2.15.2</version> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions> </plugin>
- 点击右侧Maven面板的
Reload All Maven Projects,或执行mvn clean compile手动编译项目。
3. 确认主类定义正确
- 检查
test.scala中的主类语法,需包含main方法或继承App特质:
示例(main方法方式):
package org.example import org.apache.spark.sql.SparkSession object test { def main(args: Array[String]): Unit = { val spark = SparkSession.builder() .master("local[*]") .appName("SparkTest") .getOrCreate() // 业务代码逻辑 spark.stop() } }
示例(App特质方式):
package org.example import org.apache.spark.sql.SparkSession object test extends App { val spark = SparkSession.builder() .master("local[*]") .appName("SparkTest") .getOrCreate() // 业务代码逻辑 spark.stop() }
- 确保包名
org.example与目录结构src/main/scala/org/example完全匹配,类名(object名)test无拼写错误。
4. 检查运行配置
- 打开运行配置(右上角运行按钮下拉框 > Edit Configurations),确认:
- 配置类型为
Scala Application Main class字段填写org.example.test,或点击右侧...按钮选择对应类Use classpath of module选择当前项目模块
- 配置类型为
5. 解决out文件夹缺失问题
- 执行
mvn clean package,编译后的文件会生成在Maven默认的target目录。 - 若需使用IntelliJ的out目录,可在
File > Project Structure > Project中修改Project compiler output路径,再执行Build > Rebuild Project。
内容的提问来源于stack exchange,提问作者Ramahsish Sahani
相关产品推荐
相关产品推荐

