getResourceAsStream在Java 10中返回null

pup*_*eno 8 java java-10

我有一个使用Java 1.8.0 162的应用程序,我正在将它升级到Java 10.我遇到的一个问题是

appProperties.getClass().getResourceAsStream("/application.properties")
Run Code Online (Sandbox Code Playgroud)

在Java 10中开始返回null.任何想法为什么?appProperties定义如下:

appProperties = new Properties();
Run Code Online (Sandbox Code Playgroud)

这种情况发生在静态方法中,如果相关的话.

该文件存在于src/main/resources/application.properties.无论我是从IntelliJ运行还是从Maven生成的jar中运行,都会发生这种情况.

我尝试添加:

<resources>
    <resource>
       <directory>src/main/resources</directory>
    </resource>
</resources>
Run Code Online (Sandbox Code Playgroud)

对我而言pom.xml,这没有任何影响.

使用以下方法打印类路径:

System.getProperty("java.class.path")
Run Code Online (Sandbox Code Playgroud)

收益率,作为第一个条目:

C:\Users\pupeno\Documents\Dashman\code\dashman\target\classes
Run Code Online (Sandbox Code Playgroud)

其中包含application.properties.

use*_*421 9

该变量的类是一个系统类,它由不同的类加载器加载.

你应该使用自己的一个类.


pup*_*eno 6

我找到了一个解决方案,虽然我不完全理解为什么这个有问题的线不起作用,但这有效:

Application.class.getResourceAsStream("/application.properties")
Run Code Online (Sandbox Code Playgroud)

哪里Application只是我的应用程序中的一个类.

也许这与ochi指向的答案有关,并且Application.class正在使用我的类加载器并且appProperties.getClass()正在使用系统类加载器.但是为什么它在Java 8和10上的表现方式不同并不是很明显的.