java - 使用 Travis-CI 和 Gradle 时从 getResourceAsStream 获取 null
问题描述
在我的 gradle 项目中,它有一个资源目录。使用静态 getResourceAsStream,我从该目录访问一个文件。这适用于 Eclipse 或在本地从命令行运行 gradle 时。但是在 Travis-CI 中运行时,它无法找到该文件。
我曾尝试使用“Thread.currentThread().getContextClassLoader().getResourceAsStream”和“LenPEGUtil.class.getClassLoader().getResourceAsStream”,但它们中的每一个要么在本地停止工作,要么在 Travis-CI 中仍然失败。
带有源集的 build.gradle
sourceSets{
main{
java {
srcDir 'src'
}
resources {
srcDir 'resources'
}
}
test{
java{
srcDir 'test'
}
resources{
srcDir 'testResources'
}
}
}
读取文件的java代码:
private static BufferedImage lenna;
static {
try {
InputStream lennaInputStream = LenPEGUtil.class.getResourceAsStream("/lenna.png");
setLenna(ImageIO.read(lennaInputStream));
} catch (Exception e) {
e.printStackTrace();
}
}
这在本地有效。但在 Travis-CI 中,我遇到了一个例外:
jjcard.jlenpeg.lenPEGWriterTest STANDARD_ERROR
java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1348)
at jjcard.jlenpeg.LenPEGUtil.<clinit>(LenPEGUtil.java:96)
at jjcard.jlenpeg.lenPEGWriterTest.setup(lenPEGWriterTest.java:23)
解决方案
推荐阅读
- reactjs - 以动态百分比从下到上填充圆形动画
- c# - .Net ComException 调用 UserPrincipal.FindByIdentity (0x80005000)
- javascript - 如何使用 v-if 检查 .vue 中的 vue 对象是否为空
- python - 编写修改列表的函数的 Pythonic 方式?
- php - 仅计算包含帖子摘录的帖子
- c++ - 单击 Push 按钮应使用 Qt C++ 在不同窗口中显示绘图
- splunk - 报告是否可以从 splunk 手动通过电子邮件发送
- c++ - 在 C++ 中比较不相等的数组或字符串的方法
- mysql - 基于 ASP 经典 ODBC 查询中返回的数据量的服务器错误
- java - 我可以使用默认的 oauth2 客户端添加/更改授权请求的其他参数吗