将项目导出为jar时无法找到我的数据文件夹

时间:2015-12-02 19:14:54

标签: java eclipse jar

我试图将我的eclipse java项目导出为可运行的jar文件。在我的main函数中,我必须从我的项目中的data文件夹中读取数据文件,如下所示:

List<Data> trainDataSet = readDataFile("data/BTrain.arff");

我将数据文件夹构建为源文件夹。但是当我运行java -jar myproject.jar时 它给了我这个错误:

File not found: data/ATrain.arff
Exception in thread "main" java.lang.NullPointerException
    at java.io.StreamTokenizer.<init>(StreamTokenizer.java:248)
    at weka.core.converters.ArffLoader$ArffReader.<init>(ArffLoader.java:135)
    at weka.core.Instances.<init>(Instances.java:126)
    at project4.Project4.readDataFile(Project4.java:29)
    at project4.Project4.testPrimalPerceptron(Project4.java:51)
    at project4.Project4.main(Project4.java:145)

但是当我在eclipse中将项目作为java应用程序运行时,这很有效。

这是我项目的结构, enter image description here

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

将您的jar视为zip存档(它实际上是一个zip存档,尝试使用7zip打开它!)当您从eclipse导出项目时,可以将任何文件和文件夹放入其中。

完成后,您可以使用

从Jar中加载资源
private static final String DATA_BTRAIN_ARFF = "data/BTrain.arff";
....
InputStream inputStream  = getClass().getClassLoader().getResourceAsStream(DATA_BTRAIN_ARFF);
.....