繁体   English   中英

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

[英]Add text file and images to build in the Jar - Netbeans

构建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时,该按钮似乎为空,并且在读取文件时冻结。

我需要一个与上述相同的编码答案。 因此,请告诉我或告诉我如何设置图像和阅读文本文件,而不是提供其他答案的链接。 非常感谢您对这个问题的回答。 谢谢。

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

你可以得到InputStreamgetClass().GetResourceAsStream()然后是通过InputStream一个InputStreamReader使用对read()方法。 因此,在您的情况下,您将使用

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

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

要读取图像,可以使用getResourceAsStream()返回InputStream ,也可以使用getResource()返回URL。 您可以将URL传递到返回Image对象的ImageIcon(URL)ImageIO.read(URL) 根据您的需要选择哪个。 例:

URL url = getClass().getResource("/RX/start1.png"); // you will need to 
ImageIcon icon = new ImageIcon(url);                // handle exception

暂无
暂无

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

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