You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中从java/目录而非resources/加载.json文件?

实现Java源码目录下共存JSON文件的Gradle配置方案

核心思路

Java默认仅将src/main/resources下的文件识别为资源,但通过Gradle可以扩展资源集合,让源码目录(如src/main/java)中的JSON文件也被纳入资源编译和打包流程,同时保留其与源码同目录的结构,方便开发时就近查看维护。

具体配置步骤

1. Groovy DSL 配置(build.gradle)

在构建脚本中添加资源集扩展配置:

sourceSets {
    main {
        resources {
            // 保留原有resources目录的资源配置
            srcDirs += 'src/main/resources'
            // 将源码目录加入资源目录集合
            srcDirs += 'src/main/java'
            // 仅包含源码目录下的JSON文件,避免误打包其他类型文件
            include '**/*.json'
        }
    }
}

2. Kotlin DSL 配置(build.gradle.kts)

对应Kotlin语法的配置如下:

sourceSets {
    main {
        resources {
            srcDirs("src/main/resources", "src/main/java")
            include("**/*.json")
        }
    }
}

读取JSON文件的注意事项

配置完成后,读取JSON文件时需遵循源码中的相对路径结构。例如,若JSON文件位于src/main/java/com/example/demo/model/UserConfig.json,读取路径应为/com/example/demo/model/UserConfig.json,示例读取代码:

InputStream inputStream = getClass().getResourceAsStream("/com/example/demo/model/UserConfig.json");
// 后续JSON解析逻辑...

可选优化

  • 若IDE未对源码目录下的JSON文件提供语法高亮,可检查IDE设置(如IntelliJ IDEA默认支持JSON文件识别),确保文件类型被正确关联。
  • 如需排除特定目录下的JSON文件,可在配置中添加exclude规则,例如exclude '**/temp/*.json'。

内容的提问来源于stack exchange,提问作者Marian Klühspies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:14:53