我已经创建了一个项目,在项目中有一个名为Source Packages的文件夹,其中包含了我的包。我需要图像,并且我想将它们复制到项目中的一个文件夹中(或者最好是在Source包中),这样当我创建.jar时,图像文件夹将在jar文件中。我如何在NetBean中做到这一点?
编辑:我还是不明白,这是代码:
Image star;
InputStream stream = getClass().getResourceAsStream("images/star.png");
star= ImageIO.read(stream);
它不工作,我得到错误"IllegalArgumentException input==null"
文件夹"images"位于项目"Game"的文件夹内,如果我尝试使用以下代码:
Image star;
InputStream stream = getClass().getResourceAsStream("images/star.png");
star= Toolkit.getDefaultToolkit().getImage("images/star.png");
它工作,我做错了什么与输入流?
你可以复制/粘贴你的图像到你的包或到包所代表的文件夹。当您想要访问图像时:
InputStream stream = getClass().getResourceAsStream("/com/my/pkg/my_image.png");
看这个SO问题有更多的例子:
如何从指定的包装添加图像到标签,框架等
Edit: ClassLoader.getResourceAsStream(String)将查找位于您为路径指定的包中的任何资源。例如,如果您想从com.my.pkg.b
中的类获取com.my.pkg.a
中的图像:
// From com.my.pkg.b.MyClass
InputStream stream = getClass().getResourceAsStream("/com/my/pkg/a/my_image.png");
注意指定的路径指向a
包。这将找到图像,即使它位于不同的包中。有关更详细的信息,请参阅javadoc中的ClassLoader.getResource(),这是内部使用的。
- 在你的根项目文件夹中创建一个文件夹(例如"resources")
- 在项目属性对话框的"源"页面,点击"添加"文件夹…"按钮,位于"源包选择新创建的文件夹,点击OK
- 更改"源包文件夹"中文件夹的标签表(例如"资源包")
文件夹中的文件将包含在应用程序的jar中。