尝试激发提交时出现 FileNotFound 异常

FileNotFound Exception when trying to spark submit

我有一个 spark jar,我正试图将其提交到我的本地 spark 实例。 jar 是包,所有配置文件都按照 maven 结构存在于 /resources 文件夹中。

以下是例外情况:

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)

在上述异常中可以观察到的一件事是罐子末尾的 ! 标记:TibcoMsgConsumer-1.0-SNAPSHOT.jar!/

如果我从这个 jar 中删除与 spark 相关的部分(Java Spark 上下文)并使其成为一个普通的 Java Jar,我不会遇到任何问题。这里可能出了什么问题?

我反编译了 class,这是我加载文件的方式:

ClassLoader classLoader = getClass().getClassLoader();
  File file = new File(this.classLoader.getResource("config.properties").getFile());
  private Properties properties = this.propLoader.initProp(this.file);

以下是我 运行 的工作方式: /spark-submit --conf spark.shuffle.consolidateFiles=true --verbose --class "ril.bigdata.com.Main" --master local[*] ~/Desktop/TibcoMsgConsumer-1.0-SNAPSHOT.jar

我错过了什么?

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

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

这应该可以正常工作。

此外,JavaDoc for getResource