2

我正在尝试从我的可执行 .jar 文件中读取一个文件,但它不断获取空值。

我有这个代码:

public DanceEventTicketScanner(String txtfile){
    sv = new ScannerView(this);
    findcode = false;
    InputStream is = this.getClass().getResourceAsStream("/resources/copy.csv");
    if (is == null) JOptionPane.showMessageDialog(null, "Resource not located.");
}

在 JAR 文件中,我(正常)有一个文件夹,其中包含我的所有 .class 文件,并且在同一目录中有一个名为 resources 的文件夹,其中包含 copy.csv 文件。

但是,此代码无法识别该文件。

有没有人有任何想法?

4

2 回答 2

4

删除第一个斜杠:

InputStream is = this.getClass().getResourceAsStream("resources/copy.csv");
于 2013-03-05T18:40:08.880 回答
2

getClass().getResourceAsStream(..) 将使用相对于类的路径(因此包括包目录)。getClass().getClassLoader().getResourceAsStream(..) 将使用绝对路径。因此,更改您的代码并获取类加载器,它将起作用。

于 2013-03-05T18:42:12.407 回答