使用Travis-CI和Gradle时从getResourceAsStream获取null

时间:2019-05-19 18:56:56

标签: java gradle travis-ci

在我的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)

0 个答案:

没有答案