无法读取嵌入资源

时间:2013-12-31 07:34:05

标签: java embedded-resource

我想将一个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,它可以正常工作。但是每次都无法切换代码进行调试和导出。它应该是这样的!

2 个答案:

答案 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。