我有一个使用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.
我找到了一个解决方案,虽然我不完全理解为什么这个有问题的线不起作用,但这有效:
Application.class.getResourceAsStream("/application.properties")
Run Code Online (Sandbox Code Playgroud)
哪里Application只是我的应用程序中的一个类.
也许这与ochi指向的答案有关,并且Application.class正在使用我的类加载器并且appProperties.getClass()正在使用系统类加载器.但是为什么它在Java 8和10上的表现方式不同并不是很明显的.
| 归档时间: |
|
| 查看次数: |
1864 次 |
| 最近记录: |