构建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时,按钮似乎是空的,当读取文件时它会冻结。
我需要一个答案,我在上面做了相同的编码。所以,请告诉我或告诉我如何设置图像和阅读文本文件,而不是给出其他答案的链接。我非常感谢你对这个问题的回答。谢谢。
答案 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