这可能只是IDE的细节。但是对于Eclipse,我有兴趣更多地组织我的类和资源。
据我所知,默认的“src”目录是抛出我所有资源的地方。 如果我的资源位于那里,我可以像这样引用它们:
ImageIcon icon = new ImageIcon("src/icon-16x16.png");
如果我只为图标创建一个目录(在src /目录中),那么我只需改变路径:
ImageIcon icon = new ImageIcon("src/icons/icon-16x16.png");
所以,现在我想为src /目录之外的资源做一个单独的目录。
这是我的旧结构:
prj.HelloWorld (project)
-> src/ .........
-> src/images/ ........
-> src/ (default package) ......classes.java
以下是我清理过的内容:
prj.HelloWorld (project)
-> classes/ .........
-> images/ ........
-> media / ........
现在,我对使用专用项目( prj.Resources )感兴趣,只是为了我可以在所有项目中共享的公共资源。
prj.Resources (project)
-> global_classes/ .........
-> global_images/ ........
-> global_media / ........
prj.HelloWorld (project)
-> classes/ .........
-> images/ ........
-> media / ........
然后通过将 prj.Resources 添加到Java Build Path中的Projects选项卡来修改 prj.HelloWorld 。
(prj.HelloWorld>属性> Java构建路径>项目选项卡>添加...)
到目前为止我已经完成了,并且 prj.Resources / global_classes / 中的所有类都被成功检测到了。
但是global_images中的图像不是。
ImageIcon icon0 = new ImageIcon("global_images/icon.png");
我知道我们可以使用位于不同项目中的资源,但我在这里遗漏了一些明显的东西。
答案 0 :(得分:1)
你不能访问global_images文件夹,因为它不在HelloWorld Project的根文件夹中。
但是您可以将相对路径显示为显示项目资源文件夹。
ImageIcon icon0 = new ImageIcon("../Resources/global_images/icon.png");
答案 1 :(得分:0)
了解如何从URL构建ImageIcon,以及如何相对于已编译的.class文件的位置find a URL构建它。 Eclipse不会自动将任何非.java文件复制到输出文件夹,因此您的图像也将会存在。这样做可以让程序继续工作,无论你是否将它打包成.jar文件,以及它们是否在不同的项目中,只要Java Build Path正确地表明它们的关系(它用于确定运行时类路径,由Class#getResource())搜索。