我有一个火花罐,我试图提交给我当地的火花实例。 jar是包,使得所有配置文件都按照maven结构存在于/ resources文件夹中。
以下是例外情况:
static Task StartNewAndCleanup(Action action)
{
return Task.Factory.StartNew(() =>
{
action();
Cleanup();
});
}
static void Cleanup()
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("pl-PL");
}
上述例外中的一个可观察事物是jar末尾的java.io.FileNotFoundException: file:/Users/prime/Desktop/TibcoMsgConsumer-1.0-SNAPSHOT.jar!/config.properties (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
标记:!
如果我从这个jar中删除spark相关部分(Java Spark上下文)并使其成为普通的Java Jar,我不会遇到任何问题。这可能有什么问题?
我反编译了类,这是我加载文件的方式:
TibcoMsgConsumer-1.0-SNAPSHOT.jar!/
以下是我的工作方式:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(this.classLoader.getResource("config.properties").getFile());
private Properties properties = this.propLoader.initProp(this.file);
我错过了什么?
答案 0 :(得分:1)
!
之后的任何内容都在罐子里面。它不是在config.properties
内寻找resources
,而是在您的JAR的根目录中搜索。
File file = new File(this.classLoader.getResource("resources/config.properties").getFile());
这应该可以使它发挥作用。