我需要在导出的jar中使用URL加载资源。到目前为止,我已经尝试过这个:
private Sound loadSound(String path) {
URL url = GameSound.class.getClassLoader().getResource(path);
Sound s = TinySound.loadSound(url);
return s;
}
但导出jar后,URL无效。我把我需要加载的文件放到项目的src文件夹中。我怎么能这样做?
答案 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设计。