尝试激活提交时FileNotFound异常

时间:2017-07-13 15:18:15

标签: java apache-spark filenotfoundexception

我有一个火花罐,我试图提交给我当地的火花实例。 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);

我错过了什么?

1 个答案:

答案 0 :(得分:1)

!之后的任何内容都在罐子里面。它不是在config.properties内寻找resources,而是在您的JAR的根目录中搜索。

File file = new File(this.classLoader.getResource("resources/config.properties").getFile());

这应该可以使它发挥作用。

此外,JavaDoc for getResource

相关问题