Thu*_*fir 1 java file-io configuration properties nullpointerexception
我已经尝试过在属性文件的路径上进行变体,但似乎无法使其正确。
Here's the structure:
src/
??? properties.properties
??? teln
??? ConnectMUD.java
??? IOUtil.java
??? PropertiesReader.java
Run Code Online (Sandbox Code Playgroud)
和错误:
run:
Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:434)
at java.util.Properties.load0(Properties.java:353)
at java.util.Properties.load(Properties.java:341)
at teln.PropertiesReader.getProps(PropertiesReader.java:16)
at teln.ConnectMUD.main(ConnectMUD.java:18)
Run Code Online (Sandbox Code Playgroud)
和相关课程:
package teln;
import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class PropertiesReader {
private static final Logger LOG = Logger.getLogger(PropertiesReader.class.getName());
private static Properties props = new Properties();
public static Properties getProps() {
try {
props.load(PropertiesReader.class.getResourceAsStream("/teln/teln.properties"));
} catch (IOException ex) {
Logger.getLogger(PropertiesReader.class.getName()).log(Level.SEVERE, null, ex);
}
LOG.fine(props.toString());
return props;
}
}
Run Code Online (Sandbox Code Playgroud)
项目是Teln,包是teln(也许不是很好的选择)。
您的代码和设置不匹配。您要求在其中提供teln.properties文件,teln 但要在properties.properties之外显示文件teln。请保持一致。
的javadoc Class#getResource(String)说了一切。
在ClassLoader将着眼于classpath中(可以定义在NetBeans配置类路径)的根。
使用类似Netbeans的设置
src/
??? properties.properties
??? teln
??? ConnectMUD.java
??? IOUtil.java
??? PropertiesReader.java
Run Code Online (Sandbox Code Playgroud)
我们可以假设classpath的根是
properties.properties
teln/ConnectMud.class
teln/IOUtil.class
teln/PropertiesReader.class
Run Code Online (Sandbox Code Playgroud)
如果要获取properties.properties资源,则需要像这样获取资源
props.load(PropertiesReader.class.getResourceAsStream("/properties.properties"));
Run Code Online (Sandbox Code Playgroud)
前缀/意味着使路径相对于类路径的根。如果您省略了它,则该方法将查看该类所在的包的根目录PropertiesReader。
提示:如果不确定类路径是什么,请使用Netbeans编译项目的Jar并在其中查看。