我在属性文件的路径上尝试了变体,但似乎无法使其正确。
Here's the structure:
src/
├── properties.properties
└── teln
├── ConnectMUD.java
├── IOUtil.java
└── PropertiesReader.java
和错误:
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)
和有问题的课程:
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;
}
}
项目为Teln
,包裹为teln
(可能不是很好的选择)。
答案 0 :(得分:4)
您的代码和设置不匹配。您在teln.properties
内要求teln
文件,但在properties.properties
之外显示teln
个文件。请在你的问题中保持一致。
Class#getResource(String)
的javadoc说明了一切。
ClassLoader
将查看类路径的根(您可以在Netbeans配置中定义类路径)。
使用类似
的Netbeans设置src/
├── properties.properties
└── teln
├── ConnectMUD.java
├── IOUtil.java
└── PropertiesReader.java
我们可以假设类路径根目录是
properties.properties
teln/ConnectMud.class
teln/IOUtil.class
teln/PropertiesReader.class
如果你想获得properties.properties
资源,你需要得到它
props.load(PropertiesReader.class.getResourceAsStream("/properties.properties"));
带前缀的/
表示相对于类路径根目录的路径。如果您已经忽略了它,那么该方法将查看类PropertiesReader
所在的包的根。
线索:如果您不确定您的类路径是什么,请使用Netbeans编译项目的Jar并查看其中。
答案 1 :(得分:1)
您可以尝试更换
吗?props.load(PropertiesReader.class.getResourceAsStream( “/ TELN / teln.properties”));
带
props.load(PropertiesReader.class.getResourceAsStream( “/ TELN / teln.properties”));
答案 2 :(得分:1)
这有效:
props.load(PropertiesReader.class.getResourceAsStream("/connection.properties"));
具有这种结构:
thufir@dur:~/NetBeansProjects/Teln$
thufir@dur:~/NetBeansProjects/Teln$ tree src/
src/
├── connection.properties
└── teln
├── ConnectMUD.java
├── IOUtil.java
└── PropertiesReader.java
1 directory, 4 files
thufir@dur:~/NetBeansProjects/Teln$