gradle项目在获取资源时返回null

ndasle7k  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(137)

我正在尝试从我的res文件夹获取资源。它在ide中工作(我使用intellij、jdk 8),但当我导出它(使用shadowjar)时,它会说文件不存在,但它在jar中。
我的代码:

static String getTranslate(String lang, String object) throws IOException
{
        String defaultFile = Objects.requireNonNull(Thread.currentThread().getContextClassLoader().getResource(lang + ".json")).getFile(); //ERROR

        return JsonParser.parseReader(new FileReader(defaultFile)).getAsJsonObject().get(object).getAsString();
}

例外情况:

java.io.FileNotFoundException: file:/media/vaclav/Data/IdeaProjects/ClearTemp/build/libs/ClearTemp-1.0-SNAPSHOT-all.jar!/en.json (Adresář nebo soubor neexistuje)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at java.io.FileReader.<init>(FileReader.java:58)
        at me.engo.cleartemp.assets.Tools.getTranslate(Tools.java:351)
        at me.engo.cleartemp.assets.API.clearTemp(API.java:21)
        at me.engo.cleartemp.Main.main(Main.java:14)

我的身材。格雷德尔:

plugins
{
    id 'java'
    id "com.github.johnrengelman.shadow" version "6.0.0"
}

group 'me.engo'
version '1.0-SNAPSHOT'

repositories
{
    mavenCentral()
}

dependencies
{
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'

    implementation group: 'commons-io', name: 'commons-io', version: '2.8.0'
    implementation 'com.google.code.gson:gson:2.8.7'
}

test
{
    useJUnitPlatform()
}

jar
{
    manifest
    {
        attributes 'Main-Class': 'me.engo.cleartemp.Main'
    }
}

我的res文件夹

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题