使用属性从jar运行Java应用程序

时间:2018-07-10 15:46:24

标签: java dropwizard

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

newfile

为了停止每次通过命令行传递stat -c %s,我在main方法中配置了以下代码:

java -jar myjar server config.yml

当我运行我的应用程序时

config.yml

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

  

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

1 个答案:

答案 0 :(得分: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");

并稍后从该流中读取资源。