Cha*_*hap 4 java resources locate getresource
这个问题在很多地方都有人提出,但也有很多细微的差别。(例如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);
Run Code Online (Sandbox Code Playgroud)
这是有效的 - 请注意,我已经硬编码了包含剪辑文件的目录的路径,该文件就在那里,并且与我的 .class 文件位于同一目录中。唉,注释掉的代码只是返回 url 的空值。
大多数其他帖子似乎都涉及 getResourceAsStream()。我想我应该使用 getResource() 。这有区别吗?
它不可能这么难。有什么线索吗?
String clipName = "Chook.wav";
Run Code Online (Sandbox Code Playgroud)
使用 时getResource,传入的字符串必须是绝对名称或相对于某个类有效。由于您使用的是ClassLoader.getResource()and not Class.getResource(),所以它必须是绝对路径。
如果没有看到您的实际文件层次结构,我只能猜测“bin”是您编译的类和资源的根,“ibm1260”是该路径中的包/文件夹,并且“Chook.wav”存在于该文件夹中。如果是这种情况,那么您需要使用/ibm1260/Chook.wav(或者可能ibm1260/Chook.wav,我通常不使用类加载器进行资源查找)作为传递给getResource().
无论哪种方式,您都需要确保文件被复制到编译代码的位置,并且根文件夹位于类路径上。
| 归档时间: |
|
| 查看次数: |
18161 次 |
| 最近记录: |