java - CLI 测试失败,传入 IDE - 加载资源

标签 java unit-testing android-studio intellij-idea gradle

项目设置为在其他模块中共享一个模块的资源。在 Intellij 中运行测试时,它们通过了,但是在命令行上找不到资源并抛出此异常:

{workspacePath}/projectDir/moduleWithResources/build/libs/module-with-resources.jar!/myJsonFile.json(没有那个文件或目录)

从 IDE 运行时,资源路径为: {工作空间路径}/projectDir/moduleWithResources/build/classes/test/

为什么路径与 IDE 和 CLI 不同?项目有多个模块,涉及到的资源位于src/main/resources/*。为了使资源在其他模块中可用,我添加了这个 gradle 任务:

task copyResources(type: Copy) {
    from "${projectDir}/src/main/resources"
    into "${buildDir}/classes/main"
}
processResources.dependsOn copyResources

我的目标是能够将此模块作为“编译项目()”依赖项添加到其他模块并访问资源。

任何帮助都会很棒!似乎这不是 gradle 目前支持得很好的设置。

最佳答案

Why would the paths be different from IDE vs CLI?

因为 IDE 运行分解代码。 尝试通过类加载器加载资源

MyCLass.class.getClassLoader().getResourceAsStream(name)

希望这对您有所帮助(我遇到了同样的问题,但不记得具体是如何解决的)。

关于java - CLI 测试失败,传入 IDE - 加载资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42588953/

相关文章:

java - 什么是对 Java GC 最好的循环图表示

java - 获取 USB 设备的字符串描述符

javascript - 尝试在 React/Redux/Jest 中测试调度操作函数时获取未定义的 .then

c++ - makefile.am 可以为一组目标设置 LDADD 吗?

javascript - 如何用 Jasmine 部分检查对象

JAVA_HOME 问题。 JDK好像没有正确安装

android - 在应用程序中导入我的 android 库不被识别为库

java - 模块化网络应用

java - 在 Graphics2D 中旋转动画线 (Java)

android - 如何处理为旧版和新版 Android 实现不同的 API?