java类加载器getResource中的前导斜杠(“/”)通向哪里?

Vit*_*mud 13 java

我有一个 jar (foo.jar),其根目录中有一个文件 - 1.txt。

我尝试运行以下命令 -

MyTestClass.class.getClassLoader().getResource("/1.txt");

jar (foo.jar) 是我在类路径中的所有内容。

我预计这会起作用,因为“/”应该引导我到达类路径/jar 的根(根据我在 stackoverflow 中读到的其他答案)。这将返回空值。

但似乎领先的“/”并没有按我的预期工作。

我想通了并且无需/ -即可工作

MyTestClass.class.getClassLoader().getResource("1.txt") --> jar:file:/tmp/myjar.jar!/1.txt

getResouce中前导“/”的作用/目的是什么?

Mic*_*das 11

我预计这会起作用,因为“/”应该引导我到达类路径/jar 的根(根据我在 stackoverflow 中读到的其他答案)。

前导斜杠仅用于class.getResource()覆盖其默认行为。没有前导斜杠概念class.getClassLoader().getResource(),因此它总是返回null。IMO 在这种情况下它应该抛出异常,但幸运的是这在 Guava 中得到了解决Resources