Spring Framework项目src/main为空,App.java在src根目录问题咨询
Maven项目中src根目录与src/main/java的问题解答
原因分析
- 要么是创建项目时手动放错了文件位置,没遵循Maven标准目录结构;要么是教程用了简化的演示结构,跳过了标准层级。部分快速初始化工具也可能没自动生成
src/main/java目录,导致你直接把代码放在了src根。
对项目的影响
- Maven编译失败:Maven默认只编译
src/main/java下的代码,src根的Java文件不会被mvn compile命令识别,执行构建会提示无可用源码。 - 资源打包异常:后续添加配置文件、静态资源时,没有标准目录的话,得手动在pom.xml里配置路径,否则这些文件不会被打包到最终产物中。
- IDE功能失效:IntelliJ、Eclipse这类IDE默认把
src/main/java标记为源码根,src根的代码不会被识别为源码,会丢失语法提示、调试运行等功能。
两个目录的核心区别
- src根目录:是Maven项目的源码容器,本身不是源码目录,标准场景下不会直接存放代码文件。
- src/main/java:Maven官方规定的主源码目录,所有核心业务Java代码都应该放在这里,Maven编译插件会自动处理该目录下的文件,IDE也会默认识别为源码根。
顺带提下Maven标准结构里的其他关键目录:
src/main/resources:存放配置文件、静态资源,会被打包到classpathsrc/test/java:单元测试代码目录src/test/resources:测试用的配置文件
修复步骤
- 手动创建
src/main/java目录,把App.java移动到该目录下(注意包结构,比如代码有com.example包,要创建src/main/java/com/example子目录再放文件) - 在IDE中把
src/main/java标记为源码根:- IDEA:右键目录 → Mark Directory as → Sources Root
- Eclipse:右键目录 → Build Path → Use as Source Folder
内容的提问来源于stack exchange,提问作者kee
相关产品推荐
相关产品推荐

