Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用属性从jar运行java应用程序_Java_Dropwizard - Fatal编程技术网

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

使用属性从jar运行java应用程序,java,dropwizard,Java,Dropwizard,我有一个通过传递属性文件来运行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("s

我有一个通过传递属性文件来运行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
我得到以下例外。请帮我了解原因

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

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

可能是这样的

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

然后从该流中读取资源。

检查文件是否位于错误消息中指定的路径。
InputStream configFile = args.length > 0
  ? new FileInputStream(args[0])
  : ClassLoader.getSystemClassLoader().getResourceAsStream("config.yml");