【问题标题】:run java application from jar with properties从具有属性的 jar 运行 java 应用程序
【发布时间】:2018-07-10 15:46:23
【问题描述】:

我有一项服务,我通过传递属性文件运行 jar 文件

java -jar myjar server config.yml

为了停止每次通过命令行传递config.yml,我在我的主要方法中配置了以下代码:

String configFile = args.length > 0
  ? args[0]
  : ClassLoader.getSystemClassLoader().getResource("config.yml").toString();
new myApplication.run("server", configFile);

当我运行我的应用程序时

java -jar myjar

我收到以下异常。请帮助我了解是什么原因。

线程“主”java.io.FileNotFoundException 中的异常:文件 jar:file:/Users/abc/proj/target/analytics-1.0-SNAPSHOT.jar!/config.yml 未找到 在 io.dropwizard.configuration.FileConfigurationSourceProvider.open(FileConfigurationSourceProvider.java:14)

【问题讨论】:

  • 检查文件是否在错误信息中指定的路径。

标签: java dropwizard


【解决方案1】:
ClassLoader.getSystemClassLoader().getResource("config.yml").toString();

这将创建资源 URL 的字符串表示形式(在 JAR 中)。 File 无法读取,因为文件系统无法访问它。您应该接受 InputStream 作为参数而不是文件名。

可能是这样的

InputStream configFile = args.length > 0
  ? new FileInputStream(args[0])
  : ClassLoader.getSystemClassLoader().getResourceAsStream("config.yml");

稍后从该流中读取资源。

【讨论】:

    猜你喜欢
    • 2017-09-28
    • 2021-06-23
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 2021-04-08
    • 2013-05-24
    • 2014-04-01
    相关资源
    最近更新 更多