繁体   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