我在位置有一个属性文件(来自netbeans项目资源管理器)
-MyTest
+Web Pages
+Source Packages
-Test Packages
-<default package>
+Env.properties <---- Here it is
+com.mycomp.gts.test
+com.mycomp.gts.logintest
.....
....
现在,当我尝试使用代码
查找此文件时InputStream propertiesInputStream = getClass().getResourceAsStream("Env.properties");
ENV.load(propertiesInputStream);
投掷java.lang.NullPointerException
答案 0 :(得分:6)
您不能将该类用作加载资源的引用,因为资源路径不是相对于该类。改为使用类加载器:
InputStream propertiesInputStream = getClass().getClassLoader()
.getResourceAsStream("Env.properties");
ENV.load(propertiesInputStream);
或者,您可以使用当前线程的上下文类加载器:
InputStream propertiesInputStream = Thread.currentThread()
.getContextClassLoader().getResourceAsStream("Env.properties");
ENV.load(propertiesInputStream);
答案 1 :(得分:1)
String basePath = PropertiesUtil.class.getResource("/").getPath();
InputStream in = new FileInputStream(basePath + "Env.properties");
pros.load(in);
祝你好运:)
答案 2 :(得分:1)
尝试通过以下方式获得绝对路径:
String absolute = getClass().getProtectionDomain().getCodeSource().getLocation().toExternalForm();
您可以打印出字符串absolute
并尝试将其子串到您的属性文件的路径。
答案 3 :(得分:0)
下面的代码读取存储在Maven项目的resources文件夹中的属性文件。
InputStream inputStream = YourClass.class.getResourceAsStream("/filename.properties");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
Properties properties = new Properties();
properties.load(reader);
} catch (IOException ioException) {
ioException.printStackTrace();
}