3 回答

TA貢獻1798條經驗 獲得超7個贊
您能否檢查一下 jar 內是否包含類文件夾中提到的文件。您也可以嘗試下面的代碼從類路徑加載文件。
Thread.currentThread().getContextClassLoader().getResource(<file_name>)
如果可能,則將該文件保留在 jar 外部的某個文件夾位置,并在執行 jar 時將該位置設置為類路徑。

TA貢獻1775條經驗 獲得超8個贊
正如 Ropert Scholte 提到的修復它一樣,我使用 Inputstream 來加載,而不是將其作為文件加載。我用下面的代碼修復了它:
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;
}
請注意,由于我使用該文件來驗證 JSON 架構,因此我需要將輸入流轉換為讀取器對象
添加回答
舉報