我在将java项目导出到jar(来自Eclipse)时遇到了问题。我在一个名为images
的jar中包含了一个文件。它包含我的项目使用的所有图像文件。问题是,我对这些图像的引用仅在项目不是的jar形式时才有效。我无法弄清楚为什么,我想知道是否需要更改图像引用的措辞。这就是我正在做的参考图像:
URL treeURL = null;
Image tree = null;
File pathToTheTree = new File("images/tree.png");
try {
treeURL = pathToTheTree.toURL();
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
tree = ImageIO.read(treeURL);
} catch(IOException e) {
e.printStackTrace();
}
很可能这是一个简单的问题,因为我是编码的初学者。当这些引用都在一个罐子里时,我需要做些什么才能使这些引用工作?
答案 0 :(得分:5)
确实很简单:您使用getResource()
和java.lang.Class
中的各种java.lang.ClassLoader
方法。例如,在您的应用中,您可以写
treeURL = getClass().getResource("/images/tree.png");
这将在jar文件根目录的images
目录中找到该文件。关于getResource()
方法的好处是,无论文件是否在jar中,它们都能正常工作 - 如果images
目录是磁盘上的真实目录,这仍然可以工作(只要images
的父级是您的类路径的一部分。)