我有一项通过传递属性文件来运行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)
答案 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");
并稍后从该流中读取资源。