第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Spring / Maven 從類路徑加載文件

Spring / Maven 從類路徑加載文件

蕭十郎 2024-01-28 15:54:57
在我的資源文件夾中:src/main/resources我有兩個(gè)文件,一個(gè)application.properties文件和一個(gè) JSON 文件app.schema.json我有以下功能:private File loadSchema(String schemaName) throws JsonSchemaMissingException {        ClassLoader classLoader = JsonSchemaValidator.class.getClassLoader();        File file = new File(Objects.requireNonNull(classLoader.getResource("app.schema.json")).getFile());        if (!file.exists()) {            log.LogErrorWithTransactionId("", "file does not exist " + file.getAbsolutePath());            throw new JsonSchemaMissingException("file does not exist");        }        return file;    }如果我運(yùn)行mvn spring-boot:run它成功找到該文件。如果我運(yùn)行:mvn packagejava -jar app.jar我得到一個(gè)NullPointer,因?yàn)橐韵挛募淮嬖冢?home/XXX/Docs/project/XXX/file:/home/ghovat/Docs/project/XXX/target/app.jar!/BOOT-INF/classes!/app.event.json在構(gòu)建中的 pom.xml 中,我添加了以下設(shè)置:<resources>            <resource>                <directory>src/main/resources</directory>            </resource>        </resources>無(wú)論哪種方式都行不通。如果我運(yùn)行,它可以到達(dá)該文件mvn spring-boot:run ,但如果我運(yùn)行mvn clean package spring-boot:repackage但java -jar target/app.jar找不到該文件,它也可以到達(dá)該文件。我檢查了所有文檔并嘗試了幾種不同的方法來加載文件,但無(wú)論哪種方式都找不到它。我怎樣才能使該文件可用?
查看完整描述

3 回答

?
元芳怎么了

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊

您能否檢查一下 jar 內(nèi)是否包含類文件夾中提到的文件。您也可以嘗試下面的代碼從類路徑加載文件。

Thread.currentThread().getContextClassLoader().getResource(<file_name>)

如果可能,則將該文件保留在 jar 外部的某個(gè)文件夾位置,并在執(zhí)行 jar 時(shí)將該位置設(shè)置為類路徑。


查看完整回答
反對(duì) 回復(fù) 2024-01-28
?
胡子哥哥

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊

您需要src/main/resources使用其相對(duì)路徑將目錄包含到 pom.xml 中的類路徑中:


 <build>

    <resources>

        <resource>

            <directory>src/main/resources</directory>

        </resource>

    </resources>

 </build>

你可以在這里讀更多關(guān)于它的內(nèi)容。



查看完整回答
反對(duì) 回復(fù) 2024-01-28
?
www說

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

正如 Ropert Scholte 提到的修復(fù)它一樣,我使用 Inputstream 來加載,而不是將其作為文件加載。我用下面的代碼修復(fù)了它:


private Reader loadSchema(String schemaName) throws JsonSchemaMissingException {

    ClassLoader classLoader = JsonSchemaValidator.class.getClassLoader();

    InputStream fileStream = classLoader.getResourceAsStream(schemaName);


    if (fileStream == null) {

        log.LogErrorWithTransactionId("", "file does not exist ");

        throw new JsonSchemaMissingException("file does not exist");

    }

    Reader reader = new InputStreamReader(fileStream, StandardCharsets.UTF_8);

    return reader;

}

請(qǐng)注意,由于我使用該文件來驗(yàn)證 JSON 架構(gòu),因此我需要將輸入流轉(zhuǎn)換為讀取器對(duì)象


查看完整回答
反對(duì) 回復(fù) 2024-01-28
  • 3 回答
  • 0 關(guān)注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)