未找到属性文件:java.io.FileNotFoundException使用命令行运行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

我有一个包含多个包和类的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文件?

执行.jar文件时,当前工作目录需要包含
conf/
目录


显然不是。你需要重新组织你的发行版,这样它就可以了。或者,如果属性文件是只读的,请将它们放在.jar文件中,并作为资源访问它们,例如通过
Class.getResourceAsStream()

尝试使用getResourceAsStream()加载文件。您还可以检查您的属性文件是否存在于同一目录或内部jar文件中。不,不是。如何将其放在那里?如果类路径中不存在文件,则应用程序将无法加载该文件。您需要将属性文件放在jar中或conf目录下的同一目录中。