我正在尝试从包中的src /文件夹中获取图像,但是我没有取得任何成功。
nekoPics[i] = tk.getImage(getClass().getResource(String.format("resources/pracs/neko/%s", nekosrc[i])));
任何人的消化?
答案 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
。