来自src文件夹的Toolkit.getImage()

时间:2011-03-11 07:09:04

标签: java

我正在尝试从包中的src /文件夹中获取图像,但是我没有取得任何成功。

nekoPics[i] = tk.getImage(getClass().getResource(String.format("resources/pracs/neko/%s", nekosrc[i])));

任何人的消化?

2 个答案:

答案 0 :(得分:3)

是否将其复制到构建代码的任何位置?如果在执行时该类位于src目录(或jar文件)中,则位于bin目录中无效。

另请注意,如果您的类位于程序包中,则默认情况下Class.getResource将相对于该程序包起作用。因此,如果您的软件包是foo.bar,它将会查找foo/bar/resources/pracs/neko/whatever。如果你想让它成为绝对的,你可以使用ClassLoader.getResource,或者在字符串的开头放一个前导/

String resource = String.format("/resources/pracs/neko/%s", nekosrc[i]);
nekoPics[i] = tk.getImage(getClass().getResource(resource));

String resource = String.format("resources/pracs/neko/%s", nekosrc[i]);
nekoPics[i] = tk.getImage(getClass().getClassLoader().getResource(resource));

当然,如果reousrces目录实际相对于您的包,则不应该这样做:)

答案 1 :(得分:1)

getClass().getResource()使用相对路径(即不以/开头的路径)时,路径将被解释为相对于类的包你'用于加载资源。

因此,如果您在班级mypackage.MyClass中拥有该代码,那么请求resources/pracs/neko/something实际上会尝试查找相对于您的类路径的mypackage/resources/pracs/neko/something