【发布时间】:2019-01-09 17:36:52
【问题描述】:
我知道这个问题已经被问过好几次了,但我仍然无法通过这些解决方案来解决这个问题。
我有一个 Maven 项目。还有一个位于consumer/src/main/java 的Config.java 文件。内容如下:
import java.util.Properties;
public class Config {
Properties configFile;
public Config() {
configFile = new Properties();
try {
configFile.load(this.getClass().getClassLoader().
getResourceAsStream("property_table.config.txt"));
} catch(Exception e) {
e.printStackTrace();
}
}
public String getProperty(String key) {
String value = this.configFile.getProperty(key);
return value;
}
public static void main(String[] args) {
Config config = new Config();
System.out.println("URL: " + config.getProperty("URL"));
System.out.println("PASSWORD: " + config.getProperty("PASSWORD"));
}
}
我不断收到nullpointer exception。我知道那是因为它找不到文件property_table.config.txt。
一开始我把property_table_config.txt 文件和Config.java 文件放在同一个文件夹(consumer/src/main/java/) 中。并尝试使用/property_table_config.txt 和'property_table_config.txt`。它们都不起作用。
然后我尝试使用绝对路径,但不起作用。并尝试使用/main/java/property_table_config,也不起作用。
然后我看到了这个解决方案:https://stackoverflow.com/a/2103625/8159477。
所以我创建了一个名为resources的目录并放在主文件夹下(即文件夹的路径是consumer/src/main/resources,并在resources下创建一个子文件夹config。将property_table_config.txt文件放在那里后,我改变了代码如下:
configFile.load(this.getClass().getClassLoader().getResourceAsStream("/config/property_table.config.txt"));
但这仍然不起作用。任何人都可以对此提供一些提示吗?任何建议将不胜感激!
【问题讨论】:
-
检查你的
target文件夹,你的txt文件在上面吗? -
你可以试试 Config.class.getResourceAsStream("property_table.config.txt")
-
getResourceAsStream从您的类路径加载。 src 目录与你的类路径无关 -
@Jerry06 它不在目标下。路径为target/classes/config/property_table_config.txt
标签: java inputstream