在Java中如何创建标准项目目录结构_Java工程环境规范解析
发布时间 - 2026-01-29 00:00:00 点击率:次用Maven生成比手动创建更可靠,因其archetype:generate自动创建src/main/java、src/main/resources、src/test/java等标准目录并预置pom.xml;手动易错如漏main层级、resources位置错误或test目录未标记为测试源根。
Java标准项目目录结构不是由Java语言本身规定的,而是由构建工具(如Maven或Gradle)约定的,直接手建容易漏掉关键目录或破坏工具识别逻辑。
为什么用Maven生成比手动创建更可靠
Maven的archetype:generate会自动创建符合src/main/java、src/main/resources、src/test/java等规范的层级,并预置pom.xml和基础依赖。手动创建时常见错误包括:src/java(少main/)、resources放在src/main/同级(被忽略)、test目录未设为测试源根(IDE不识别测试类)。
- 执行
mvn archetype:generate -DgroupId=com.example -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false即可生成标准骨架 - 若用IDEA,新建项目时选“Maven”,勾选“Create from archetype”,选
maven-archetype-quickstart,比手动建目录快且零出错 - Gradle用户应运行
gradle init --type java-application,它会生成src/main/java和src/test/java,但默认不含resources目录,需手动补上src/main/resources
src/main/java和src/main/resources的分工必须明确
Java类文件只能放src/main/java下,且包路径必须与目录结构严格一致(如com.example.App必须在src/main/java/com/example/App.java);而src/main/resources专用于非编译型资源——application.properties、logback.xml、SQL脚本、静态配置JSON等。混淆会导致运行时报FileNotFoundException或NullPointerException(因Class.getResource()找不到路径)。
-
src/main/java/com/example/config/DbConfig.java→ 编译后生成DbConfig.class,放在classes/com/example/config/ -
src/main/resources/application.yml→ 直接复制到classes/根目录,可被ClassLoader.getSystemResource("application.yml")加载 - 切勿把
.properties放进java目录——编译器会尝试编译它,报error: invalid flag
测试目录src/test/的结构和依赖范围易被忽略
src/test/java必须与主代码

com.example.service.UserService,测试类就该在src/test/java/com/example/service/UserServiceTest.java),否则@Test方法无法被发现;更重要的是,src/test/resources中的配置(如test-application.properties)仅在测试阶段生效,不会打进最终jar包——这是隔离测试环境的关键机制。
- Maven中
test范围的依赖(如junit、mockito-core)不会出现在mvn dependency:tree的运行时依赖列表里 - 若在
src/test/resources里放了logback-test.xml,它会优先于src/main/resources/logback.xml被加载,适合调试测试日志级别 - IntelliJ中右键
src/test目录 → “Mark Directory as” → “Test Sources Root”,否则@Test注解不生效
真正麻烦的不是目录名写错,而是资源路径硬编码成"./config/app.conf"这类相对路径——它在IDE里可能跑通,一打包成jar就失效。所有资源加载都该走Class.getResource()或ClassLoader.getResource(),依赖构建工具定义的classpath规则。
# java
# js
# json
# idea
# 编码
# app
# 工具
# ssl
# ai
# java类
# 为什么
# sql
# logback
# maven
# junit
# xml
# Directory
# Error
# class
# ide
# gradle
# 放在
# 是由
# 加载
# 它会
# 的是
# 这是
# 找不到
# 出现在
# 设为
# 右键
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
怎样使用JSON进行数据交换_它有什么限制
Java解压缩zip - 解压缩多个文件或文件夹实例
linux写shell需要注意的问题(必看)
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
linux top下的 minerd 木马清除方法
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Laravel怎么使用artisan命令缓存配置和视图
韩国服务器如何优化跨境访问实现高效连接?
大型企业网站制作流程,做网站需要注册公司吗?
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel如何实现用户注册和登录?(Auth脚手架指南)
Laravel如何处理异常和错误?(Handler示例)
网站图片在线制作软件,怎么在图片上做链接?
如何用狗爹虚拟主机快速搭建网站?
如何快速搭建二级域名独立网站?
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
微信小程序 input输入框控件详解及实例(多种示例)
北京专业网站制作设计师招聘,北京白云观官方网站?
js代码实现下拉菜单【推荐】
如何在搬瓦工VPS快速搭建网站?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Java遍历集合的三种方式
用v-html解决Vue.js渲染中html标签不被解析的问题
如何在Windows 2008云服务器安全搭建网站?
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
iOS正则表达式验证手机号、邮箱、身份证号等
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
如何在阿里云通过域名搭建网站?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
JS弹性运动实现方法分析
微信小程序 wx.uploadFile无法上传解决办法
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
如何将凡科建站内容保存为本地文件?
如何快速选择适合个人网站的云服务器配置?
javascript中的try catch异常捕获机制用法分析

