我想将一个txt文件嵌入到runnable jar中并读取它。我尝试使用此代码
Reader reader = new InputStreamReader(getClass().getResourceAsStream("/src/kan/master_ship.txt"),"UTF-8");
但它给出了
java.lang.NullPointerException
at java.io.Reader.<init>(Unknown Source)
at java.io.InputStreamReader.<init>(Unknown Source)
at kan.util.Master.loadMasterShip(Master.java:37)
at kan.util.Master.load(Master.java:26)
at kan.Main.main(Main.java:22)
它是在eclipse调试环境中。有什么帮助吗?
之后我尝试将其导出为runnable jar,它可以正常工作。但是每次都无法切换代码进行调试和导出。它应该是这样的!
答案 0 :(得分:2)
您无法提供正确的路径。从源ide中测试它时可能会很好,但是当你为runnable jar引用它时它会失败。
尝试将其放在构造函数中并引用它。它曾经适合我。
public myClass(){
BufferedInputStream file= (BufferedInputStream) this.getClass().getResourceAsStream("resources/a.txt");
try {
System.out.println((char)file.read());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 1 :(得分:1)
getClass().getResourceAsStream
将在类路径上找到资源库。
因此,您必须确保要打开的文件位于类路径中。我看到你试图找到src/kan/master_ship.txt
中不在类路径中的文件。尝试/kan/master_ship.txt
并确保其中包含kan
文件夹和master_ship.txt
文件,该文件夹位于类路径中。
在日食中,类路径通常被命名为target。