繁体   English   中英

导出的Jar文件将无法读取jar中的文件

[英]Exported Jar file won't read file inside jar

在下面的代码示例中,当我在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文件夹内。 我注意到一件事可能表明问题所在。

  1. 在我拥有的打印语句中,我注意到javaFile.jar节末尾有一个感叹号。 那是对的吗? 可以说明文件或结构有问题吗?

另外,以防万一有人对我应该如何加载文件有更好的建议,我将告诉您我的意图。 我想从罐子中的相对位置(图像文件夹)加载文件。 我想显示它(已经在我的实际代码中完成了),并且还存储了以后要传递给另一个函数的位置(也已经完成了)。

尝试这个

public void test() {
    try(InputStream is = getClass().getResourceAsStream("Images/questionMark.png")) {
        ImageIO.read(is);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

您应该尝试检查您的类是否与jar中的Images位于同一目录中。

   |
   |- Your class
   |- Images
       |- questionMark.png

另外,您是否尝试过直接使用url对象?

File file = new File(url);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM