我试图整天解决这个问题,但徒劳无功!!
基本上我想导出一个带有images
和txt
文件的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
时,我找不到我的资源文件夹! SOS
答案 0 :(得分:4)
嵌入式资源不能像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
,但是获得URL
{{1}可能会非常麻烦所以InputStream
使得在单个调用中实现这一点更容易