未找到属性文件:java.io.FileNotFoundException使用命令行运行java程序
我有一个包含多个包和类的java项目。名为Driver.java的主类如下所示:未找到属性文件:java.io.FileNotFoundException使用命令行运行java程序,java,command-line,classpath,javac,Java,Command Line,Classpath,Javac,我有一个包含多个包和类的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.Propertie
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文件?执行.jar文件时,当前工作目录需要包含
conf/
目录
显然不是。你需要重新组织你的发行版,这样它就可以了。或者,如果属性文件是只读的,请将它们放在.jar文件中,并作为资源访问它们,例如通过
Class.getResourceAsStream()
尝试使用getResourceAsStream()加载文件。您还可以检查您的属性文件是否存在于同一目录或内部jar文件中。不,不是。如何将其放在那里?如果类路径中不存在文件,则应用程序将无法加载该文件。您需要将属性文件放在jar中或conf目录下的同一目录中。