我有一个包含多个包和类的java项目。名为Driver.java的主类如下:
package net.librec.tool.driver;
import net.librec.conf.Configuration;
import net.librec.job.RecommenderJob;
import net.librec.math.algorithm.Randoms;
import java.io.FileInputStream;
import java.util.Properties;
/**
* Created by Himan on 12/5/2016.
*/
public class Driver {
// Change this to load a different configuration file.
public static String CONFIG_FILE =
"conf/NBayes.properties";
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String confFilePath = CONFIG_FILE;
Properties prop = new Properties();
prop.load(new FileInputStream(confFilePath));
for (String name : prop.stringPropertyNames()) {
conf.set(name, prop.getProperty(name));
}
Randoms.seed(20161205);
RecommenderJob job = new RecommenderJob(conf);
job.runJob();
System.out.print("Finished");
}
}
如您所见,在本课程中,我阅读了NBayes.properties。以下是我的项目结构的快照:
我创建了一个名为librec.jar的jar文件。但是,当我使用以下命令行运行程序时:
java -jar librec.jar
我收到以下错误:
java.io.FileNotFoundException: conf/NBayes.properties (No such file or directory)
问题是什么?运行此程序的正确方法是什么?是否需要制作一个jar文件?
答案 0 :(得分:0)
执行.jar文件时的当前工作目录需要包含conf/
目录。
显然它没有。您需要重新组织您的分发,以便它可以。或者,如果属性文件是只读的,则将它们放在 .jar文件中,并通过例如资源访问它们。 Class.getResourceAsStream()
。