Maven转换Java项目后运行报找不到或无法加载主类问题咨询
转Maven项目后找不到主类问题解决
问题背景
- 初始创建的普通Java项目可正常运行,手动转换为Maven项目后pom.xml无任何报错
- 运行主类时抛出如下错误:
Error: Could not find or load main class jhj Caused by: java.lang.ClassNotFoundException: jhj
- 对应主类代码无语法问题:
public class jhj { public static void main(String[] args) { System.out.println("as"); } }
- 已确认
JAVA_HOME、M2_HOME、MAVEN_HOME环境变量配置正确,已尝试移除项目重导、刷新项目、执行Maven Update Project操作,问题未解决。
根因与解决步骤
这个问题90%以上的原因是普通项目转Maven项目时,IDE没有自动完成Maven标准目录结构的标记,导致Java源文件没有被编译到输出路径,运行时自然找不到对应class文件,按以下顺序操作排查即可:
- 标记源码根目录
Maven默认的源码根路径为src/main/java,手动转Maven项目时IDE不会自动把原有源码目录识别为构建路径:- Eclipse/STS:右键点击存放jhj.java的目录,选择
Build Path -> Use as Source Folder - IDEA:右键点击存放jhj.java的目录,选择
Mark Directory as -> Sources Root
标记完成后在项目根目录执行命令mvn clean compile,查看target/classes目录下是否生成了jhj.class文件,有生成的话再尝试运行。
- Eclipse/STS:右键点击存放jhj.java的目录,选择
- 核对包声明与运行类名
如果jhj.java存放在带包路径的目录下,必须在文件第一行添加对应包声明,例如存放在com.demo目录下时,第一行必须写package com.demo;,运行时要使用全限定类名com.demo.jhj,不能直接使用裸类名jhj。 - 彻底清理IDE缓存重新导入
关闭IDE后进入项目根目录,删除以下内容:- Eclipse系:删除
.settings文件夹、.classpath文件、.project文件、整个target文件夹 - IDEA系:删除
.idea文件夹、所有后缀为.iml的文件、整个target文件夹
删除完成后重新打开IDE,选择导入根目录下的pom.xml文件,等待Maven依赖和构建路径加载完成后再尝试运行。
- Eclipse系:删除
- 核对pom.xml构建配置
检查pom.xml中的<build>节点,如果手动配置了<sourceDirectory>标签,确认标签内的路径和你实际存放源码的路径一致;最简配置下不需要额外配置sourceDirectory,使用Maven默认路径即可。
内容的提问来源于stack exchange,提问作者mathi arasan
相关产品推荐
相关产品推荐

