我一整天都在试图解决这个问题,但徒劳无功!!
基本上,我想导出一个带有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
打开它时,我找不到我的资源文件夹!!!求救
一个嵌入的资源不能像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
的InputStream
可能会很混乱,所以Class#getResourceAsStream
使得在一次调用中更容易实现这一点