这个问题在很多地方都有人提出,但也有很多细微的差别。 (例如Java - getClassLoader().getResource() 让我发疯等等。)我仍然无法让它发挥作用。
这是一个代码片段:
String clipName = "Chook.wav";
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
// URL url = classLoader.getResource(clipName);
URL url = new URL("file:///Users/chap/Documents/workspace/the1620/bin/ibm1620/" + clipName);
ais = AudioSystem.getAudioInputStream(url);
这是可行的——请注意,我已经硬编码了包含剪辑文件的目录的路径,该路径is那里,以及is与我的 .class 文件位于同一目录中。唉,注释掉的代码只是返回 url 的空值。
大多数其他帖子似乎都涉及 getResourceAsStream()。我想我应该使用 getResource() 。是that有所作为吗?
It just can't就这么难吧。有什么线索吗?
String clipName = "Chook.wav";
使用时getResource
,您传入的字符串必须是绝对名称或相对于某个类有效。既然你正在使用ClassLoader.getResource()
并不是Class.getResource()
,它必须是绝对路径。
如果没有看到实际的文件层次结构,我只能猜测“bin”是编译的类和资源的根,“ibm1260”是该路径中的包/文件夹,并且“Chook.wav”存在于该文件夹中。如果是这种情况,那么您需要使用/ibm1260/Chook.wav
(或可能ibm1260/Chook.wav
,我通常不使用类加载器进行资源查找)作为您传递到的文件的名称getResource()
.
无论哪种方式,您都需要确保文件被复制到编译代码的位置,并且根文件夹位于类路径上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)