[英]Jar that read file
我有一個處理 elasticsearch 索引的代碼。 其中一個步驟是,程序需要讀取 jsonschema 文件才能繼續執行。 該代碼在我的機器上運行良好,但是當我在 docker 容器內將其作為 jar 文件執行時,它給了我以下錯誤:
java.io.FileNotFoundException: dm.jsonschema (No such file or directory)
加載模式的代碼是:
public class loadSchema {
private static final String JSON_SCHEMA_DOCUMENT = "dm.jsonschema";
....
public static JsonSchema tryLoadJSONSchema() {
JsonSchemaFactory factory = JsonSchemaFactory.byDefault();
JsonNode cdmSchema = null;
try {
cdmSchema = JsonLoader.fromPath(JSON_SCHEMA_DOCUMENT);
} catch (IOException e) {
System.out.println(e);
System.exit(-1);
}
我將 jsonschema 文件放在容器中 jar 文件旁邊,但它一直給我同樣的錯誤。 知道如何解決這個問題嗎?
文件的相對路徑是從您啟動java
可執行File
的任何位置解析的(注意user.home
),而不是從 jar 存檔所在的位置解析。
最好的方法是使用系統屬性將此文件位置外部化。 例如,如果您定義jsonSchemaPath
屬性:
String path = Sytem.getProperty("jsonSchemaPath");
JsonSchemaFactory factory = JsonSchemaFactory.byDefault();
JsonNode cdmSchema = JsonLoader.fromPath(path);
然后您可以在 java 命令中更改它:
java -jar yourcode.jar -DjsonSchemaPath=/path/to/dm.jsonschema
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.