2

我在位置有一个属性文件(来自 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

4

4 回答 4

6

您不能将类用作加载资源的引用,因为资源路径与类无关。改用类加载器:

InputStream propertiesInputStream = getClass().getClassLoader()
        .getResourceAsStream("Env.properties");
ENV.load(propertiesInputStream);

或者,您可以使用当前线程的上下文类加载器:

InputStream propertiesInputStream = Thread.currentThread()
    .getContextClassLoader().getResourceAsStream("Env.properties");
ENV.load(propertiesInputStream);
于 2013-04-09T06:22:51.213 回答
1
String basePath = PropertiesUtil.class.getResource("/").getPath();
InputStream in = new FileInputStream(basePath + "Env.properties");
pros.load(in);

祝你好运:)

于 2013-04-09T06:24:47.537 回答
1

尝试通过以下方式获取绝对路径:

String absolute = getClass().getProtectionDomain().getCodeSource().getLocation().toExternalForm();

您可以打印出字符串absolute并尝试将其子串到您的属性文件的路径中。

于 2013-04-09T06:37:08.387 回答
0

下面的代码读取存储在 Maven 项目的资源文件夹中的属性文件。

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();
}
于 2020-11-03T17:32:01.443 回答