Java 如何从';资源';NetBeans中的文件夹
我在NetBeans 7.0中有一个Java项目 我想在标签上动态添加一些图像。根据程序的状态,图像会有所不同 我把这样一张图片“filling.jpg”放在我项目的“resources”文件夹中 我希望正确地访问该文件(不是通过绝对或相对路径,因为在构建jar文件时,这会导致问题) 所以我找到了这个方法:Java 如何从';资源';NetBeans中的文件夹,java,netbeans,resources,Java,Netbeans,Resources,我在NetBeans 7.0中有一个Java项目 我想在标签上动态添加一些图像。根据程序的状态,图像会有所不同 我把这样一张图片“filling.jpg”放在我项目的“resources”文件夹中 我希望正确地访问该文件(不是通过绝对或相对路径,因为在构建jar文件时,这会导致问题) 所以我找到了这个方法: ImageIcon fillingIcon = new ImageIcon(getClass().getClassLoader().getResource("filling.jpg"));
ImageIcon fillingIcon = new ImageIcon(getClass().getClassLoader().getResource("filling.jpg"));
labelFontFilling.setIcon(fillingIcon);
它总是给我java.lang.NullPointerException。
但我确信确实存在该映像,因为我可以从该标签的NetBeans属性菜单中将该映像分配给该标签(但我不希望这样,我希望通过Java代码添加该映像)
我做错了什么?我如何才能正确地获得该图像?谢谢,Valter Henrique,根据您的提示,我意识到,我只是输入了该图像的错误路径。 在我的一次尝试中,我使用了
String pathToImageSortBy = "resources/testDataIcons/filling.png";
ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));
但正确的方法是在资源路径中使用我的项目名称
String pathToImageSortBy = "nameOfProject/resources/testDataIcons/filling.png";
ImageIcon SortByIcon = new ImageIcon(getClass().getClassLoader().getResource(pathToImageSortBy));
使用netBeans IDE 7.2是一种痛苦
- (项目)
- src
- 项目包文件夹(包含.java文件)
- 资源(任意名称)
- 图像(可选子文件夹)
- src
- (项目)
- 构建
- 课程
- 项目包文件夹(包含生成的.class文件)
- 资源(您的资源)
- 图像(可选子文件夹)
- 项目包文件夹(包含生成的.class文件)
- 课程
- 构建
dlabel = new JLabel(new ImageIcon(getClass().getClassLoader().getResource("resources/images/logo.png")));
以及:
为我工作。请注意,在一种情况下有一个前导“/”而在另一种情况下没有。
因此,资源路径的根是build文件夹中的“classes”文件夹
双击dist文件夹中的可执行jar文件。资源的路径仍然有效。我有一个稍微不同的方法,可能对某些人有用/更有益 在主项目文件夹下,创建一个资源文件夹。您的文件夹结构应该如下所示
- 项目文件夹
- 建造
- 距离
- 解放党
- NB项目
- 资源
- src
MyClass.class.getResource("/main.jpg");
如果要在resources文件夹下创建名为Images的包,可以按如下方式检索资源:
MyClass.class.getResource("/Images/main.jpg");
对我来说,它就像我在
src
下的icons
文件夹中有图像一样工作,我在下面写代码
newImageIcon(getClass().getResource(“/icons/rsz_measurement_01.png”)代码>您可以打印给定的路径吗?与System.out.println(getClass().getClassLoader().getResource(“filling.jpg”))类似,这可以为您提供尝试使用的路径的线索。它返回“null”,因此这是一个验证问题。但我不明白为什么它的返回值为空,在您的项目中创建的resources文件夹在哪里?它在classpath中吗?它在src/NameofProject/resources中的resources文件夹中。默认情况下,它是由NetBeans创建的。我不知道如何将它添加到project中,我查看project->Properties->Libraries,但我找不到可以添加它的地方。这里有一个很好的建议:我使用了这种方法,但我发现了一种令人不安的效果。构建完成后,netbeans将加载jar中的所有资源,我真的希望这些资源不在jar中!那么这个问题有解决方法吗?不幸的是,java资源方法可能不是您想要的。但是,如果您的文件位于类路径中,则可以使用ClassLoader.getSystemResource(“somefile.txt”)……您也不再希望包含上述resources文件夹。另一种选择是在jar的父目录(或静态路径)中查找给定的文件(资源),并使用file或其他等效文件打开它们以满足您的需要。如果文件不存在,则从存储在jar中的资源创建它。在这种情况下,它们更像是模板。这对我来说有点不清楚。“图像”文件夹应该在“资源”文件夹内还是在其旁边!
MyClass.class.getResource("/Images/main.jpg");