我试图在Spring工具套件中第一次创建一个可运行的jar。我使用导出功能并创建jar文件,但在运行时,我收到以下错误:
java.io.FileNotFoundException: config.properties (The system cannot find
the file specified)
我在这里找到了一些建议的解决方案,引用将文件放在源文件夹中,即使我已经这样做了,它仍然看不到文件。我甚至把它放在多个地方,希望能有效。
我在这里调用类来读取文件:
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("GETTING CONFIG PROPERTIES FILE...");
configuration.readConfig();
....
public static void readConfig() {
Properties fileProp = new Properties();
try {
//OutputStream output = null;
URL url1 = configuration.class.
getClassLoader().getResource("config.properties");
File f = new File(url1.getFile());
FileReader rd = new FileReader(f.getPath());
//InputStream infile = new FileInputStream("config.properties");
fileProp.load(rd);
编辑:
通过插入斜杠对文件名路径进行了更改,但似乎无法找到该文件:
LOADING CONFIG PROPERTIES FILE...
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.
JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NullPointerException
at com.ccccc.hbasededuper.
configuration.readConfig(configuration.java:48)
at com.ccccc.hbasededuper.HBaseMain.main(HBaseMain.java:144)
... 5 more
这行代码碰巧是这样的:
URL url1 = configuration.class.getClassLoader().
getResource("/config.properties");
System.out.println("LOADING CONFIG PROPERTIES FILE...");
File f = new File(url1.getFile());
FileReader rd = new FileReader(f.getPath());
错误发生在url1.getFile。
EDIT2:
想出来;问题是我在阅读属性文件的方式。
fileprop.load(ClassLoader.getSystemResourceAsStream("config.properties"))
答案 0 :(得分:1)
我很确定你想要的是src / main / resources中的那个,可以通过
引用configuration.class.getClassLoader().getResources("/config.properties")
注意'/'。
答案 1 :(得分:0)
以下是产生差异并保持配置文件的原因 的src /主/资源
fileProp.load(configuration.class.
getClassLoader().getResourceAsStream("config.properties"));