【问题标题】:Exporting a JAR with Ressources导出带有资源的 JAR
【发布时间】:2014-02-03 08:51:18
【问题描述】:

我整天都在尝试解决这个问题,但徒劳无功!!

基本上我想导出一个带有imagestxt 文件的JAR(后者可能是audio 文件)。

我发现我需要在其中创建一个新文件夹,我应该添加我的资源,我做到了。

然后我发现我应该使用类似的东西:

pan.add(new JLabel(new ImageIcon(getClass().getResource("/131868.jpg"))));

而不是pan.add(new JLabel(new ImageIcon("/131868.jpg"))); 我做了

但对于我的文本文件

BufferedReader br = new BufferedReader(new FileReader("dictionnaire.txt"));

我使用了BufferedReader br = new BufferedReader(new FileReader((getClass().getResource("dictionnaire.txt")).toString));,但我得到了NullPointerException

如果没有它,当我制作 JAR 文件并将其打开为 rar 时,我找不到我的资源文件夹!!!!求救

【问题讨论】:

    标签: java jar executable-jar


    【解决方案1】:

    嵌入的资源不能当成File,别把它当成文件,只会让你更迷惑,它是“资源”,需要区别对待

    代替

    BufferedReader br = new BufferedReader(new FileReader("dictionnaire.txt"));
    

    BufferedReader br = new BufferedReader(new FileReader((getClass().getResource("dictionnaire.txt")).toString)); 
    

    你需要使用类似...

    BufferedReader br = new BufferedReader(
        new InputStreamReader(getClass().getResourceAsStream("dictionnaire.txt"));
    

    Class#getResource 将返回一个URL,许多对象都乐于处理URL,但必须得到URLInputStream 可能会很麻烦,所以Class#getResourceAsStream 更容易一次调用即可实现这一目标

    【讨论】:

    • 好的,我做到了,当我运行它时,我在这一行有一个NullPointerExceptionrightpan.add(new JLabel(new ImageIcon(getClass().getResource("data/131876.jpg"))));
    • 两件事,确保资源确实存在,然后尝试使用/data/131876.jpg...
    • 包含图像文件的包的限定名称是什么:131876.jpg?
    • 在构建应用程序时,data 是否包含在 Jar 中? Jars 只是基于 Zip 的文件,因此您可以将它们解压缩以进行检查
    • 尝试创建一个resources 目录并将data 目录添加到其中...我从未使用过Eclipse,但经常提到“资源”。你可以试试看stackoverflow.com/questions/270197/…
    猜你喜欢
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 2019-12-16
    • 2013-04-28
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多