我有一个像这样的文件夹和包结构
类文件正在使用图像文件夹的图像。在构建jar时我没有插入图像的问题,我只是将(在我的build.xml中)rsrc文件夹内容复制到src文件夹构建中,因此资源位于.class路径中:
<copydir src="./rsrc/studentapp/view/"
dest="${build}/studentapp/view/"/>
创建我的jar后,我可以通过(示例)获取资源:
URL resource = this.getClass().getResource("testimage.png");
问题是,如果我只是想在不创建jar的情况下编译一个类,上面的行就不会工作,因为它不在正确的文件夹中。有没有办法相对支持这个订单结构读出一个文件,并让它也可以在jar中工作?
最好的问候
编辑:使用Windows可能会有不同的语法
答案 0 :(得分:0)
通过设置相对于rscrc的路径解决它并将整个rsrc文件夹复制到jar构建
String path = "rsrc\\studentapp\\view\\testimage.png";
File test = new File(path);
try {
BufferedImage image = ImageIO.read(test);
ImageIcon icon = new ImageIcon(image);
JOptionPane.showMessageDialog(null,
" <- Image should appear here", "Testimage",
JOptionPane.INFORMATION_MESSAGE, icon);
} catch (IOException e1) {
e1.printStackTrace();
}
这里是build.xml中的一行:
<copydir src="./rsrc" dest="${build}"/>