Java如何使用URL在导出的jar中加载资源

时间:2013-12-16 00:15:35

标签: java url io

我需要在导出的jar中使用URL加载资源。到目前为止,我已经尝试过这个:

private Sound loadSound(String path) {
    URL url = GameSound.class.getClassLoader().getResource(path);
    Sound s = TinySound.loadSound(url);
    return s;
}

但导出jar后,URL无效。我把我需要加载的文件放到项目的src文件夹中。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

getClass().getResource(path)可以使用“/ ....”形式的绝对路径。 ClassLoader.getResource(path)使用没有前导斜杠的绝对路径:“xyz / abc / uvw`。

另一个问题是使用负责该jar的类加载器。你的GameSound应该最好存放在同一个外部jar中。


问题: 在src中它可以在一个jar中工作:

当只有一个jar时,请使用7zip或WinZip检查jar中的文件路径。尤其是罐子和非Windows系统中的路径区分大小写

对于/a/b/c/d.png,可以使用:

a.b.MyClass.getResource("c/d.png");
e.f.MyClass.getResource("/a/b/c/d.png");

MyClass位于同一个罐子里。

第二个原因可能是use class内部需要file://http://网址。那只是完全糟糕的API设计。