在下面的代码示例中,当我在Eclipse中测试代码时,它工作得很好。但是,当我导出jar文件并通过命令行测试它时,它会抛出一个错误:IIOException: Can't read input file!
private BufferedImage img = null;
private String imgSource;
if (img == null)
{
try {
URL url = getClass().getResource("Images/questionMark.png");
System.out.println(url.getPath());
/* This prints: file:/C:/Users/Keno/Documents/javaFile.jar!/javaFile/Images/questionMark.png */
File file = new File(url.getPath());
img = ImageIO.read(file);
imgSource = file.getName();
} catch (IOException e) {
e.printStackTrace();
}
}
我想要获取的文件位于javaFile
包内的Images文件夹内。我注意到有一件事可能表明问题。
另外,如果有人对如何加载文件有更好的建议,我会告诉你我的意图。我想从jar中的相对位置(Images文件夹)加载文件。我想显示它(已经在我的实际代码中完成)并且还存储稍后要传递给另一个函数的位置(也已完成)。
答案 0 :(得分:1)
试试这个
public void test() {
try(InputStream is = getClass().getResourceAsStream("Images/questionMark.png")) {
ImageIO.read(is);
} catch (IOException e) {
e.printStackTrace();
}
}
答案 1 :(得分:0)
您应该尝试检查您的类是否与jar中的图像位于同一目录中。
|
|- Your class
|- Images
|- questionMark.png
另外,您是否尝试直接使用您的网址对象?
File file = new File(url);