添加文本文件和图像以在Jar - Netbeans中构建

时间:2014-06-01 10:44:30

标签: java netbeans jar

构建Jar时,我真的面临太多问题。问题出在Netbeans中,它的工作正常,但如果我尝试从/ dest文件夹运行.jar文件,则不会调用其他文本文件和图像。我尝试了各种解决方案,但无法真正解决它。这是我存储.java文件的目录。 src/RX/example.java其中RX是包名称。我将所有图像和文本文件插入到同一目录中并像这样调用。

JButton btnStart = new JButton(new ImageIcon("src/RX/start1.png")); //Set Image for Button

现在从文本文件中读取:

Reader reader = null; 
JTextArea jtaUser= new JTextArea(); 
try {
    reader = new FileReader(new File("src/RX/rxUser.txt"));
    jtaUser.read(reader, "");
} catch (Exception exp) {
} finally {
    try {
        reader.close();
    } catch (Exception exp) {
    }
}

正如我之前所说,问题是如果我从Netbeans运行一切正常,但文本文件和图像不包含在.jar文件中。因此,当我打开.jar时,按钮似乎是空的,当读取文件时它会冻结。

我需要一个答案,我在上面做了相同的编码。所以,请告诉我或告诉我如何设置图像和阅读文本文件,而不是给出其他答案的链接。我非常感谢你对这个问题的回答。谢谢。

1 个答案:

答案 0 :(得分:1)

当您将文件作为File对象读取时,程序将尝试从本地文件系统读取。如果您要将文件用作资源,那么您应该这样阅读它们。

您可以从InputStream进入getClass().GetResourceAsStream(),然后将InputStream传递给InputStreamReader以用于read()方法。所以在你的情况下,你会使用

InputStream is = getClass().getResourceAsStream("/RX/rxUsers.txt");
InputStreamReader reader = new InputStreamReader(is);
textArea.read(reader, ..);

我使用的路径由类路径决定。由于RX目录是src的直接子项,因此它将位于类路径的根目录中。要从调用类到达类路径的根(使用getClass()),您需要在路径前面添加额外的/

要阅读图片,您可以使用返回getResourceAsStream()的{​​{1}},也可以使用返回网址的InputStream。您可以将网址传递给返回getResource()对象的ImageIcon(URL)ImageIO.read(URL)。根据您的需求选择哪一个。例如:

Image