繁体   English   中英

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

[英]Java how to load resource in exported jar using URL

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

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

但是导出罐子后,URL不起作用。 我已将需要加载的文件放入项目的src文件夹中。 我怎样才能做到这一点?

getClass().getResource(path)可以使用形式为“ / ....”的绝对路径。 ClassLoader.getResource(path)使用绝对路径,且不带斜杠:“ xyz / abc / uvw”。

另一个问题是使用负责该jar的类加载器。 您的GameSound应该最好驻留在相同的外部jar中。


问题:在src中,它不能在jar中工作:

如果只有一个jar,请使用7zip或WinZip检查jar中的文件路径。 特别是jar和非Windows系统中的路径区分大小写

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

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

MyClass驻留在同一jar中。

第二个原因可能是using类在内部期望使用file://http:// URL。 那简直就是完全糟糕的API设计。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM