簡體   English   中英

Jar 讀取文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM