getResourceAsStream 在 Java 10 中返回 null
getResourceAsStream returning null in Java 10
我有一个使用 Java 1.8.0 162 的应用程序,我正在将它升级到 Java 10。我遇到的问题之一是
appProperties.getClass().getResourceAsStream("/application.properties")
开始在 Java 中返回 null 10. 知道为什么吗? appProperties
定义如下:
appProperties = new Properties();
这发生在静态方法中,以防相关。
文件存在于 src/main/resources/application.properties
中。无论我是 运行 来自 IntelliJ 还是来自 Maven 生成的 jar,都会发生这种情况。
我尝试添加:
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
我的 pom.xml
但是没有效果。
打印 class 路径:
System.getProperty("java.class.path")
产量,作为第一个条目:
C:\Users\pupeno\Documents\Dashman\code\dashman\target\classes
其中包含 application.properties.
我找到了一个解决方案,虽然我不完全理解为什么这行得通而有问题的行却行不通,但这行得通:
Application.class.getResourceAsStream("/application.properties")
其中 Application
在我的应用程序中只是一个 class。
也许这与指向的答案有关,Application.class
正在使用my class加载器和appProperties.getClass()
正在使用系统 class 装载程序。但是为什么它在 Java 8 和 10 上的表现不同并不明显。
该变量的 class 是一个系统 class,它由不同的 class 加载程序加载。
您应该使用自己的 classes.
我在使用 Intellij 时遇到了同样的错误,解决方法是我需要添加我打算获取的特定资源的文件格式。导航 CRTL+ALT+s 或设置->编译器->资源模式:
在该字段中输入文件扩展名。点击应用,然后okay
我有一个使用 Java 1.8.0 162 的应用程序,我正在将它升级到 Java 10。我遇到的问题之一是
appProperties.getClass().getResourceAsStream("/application.properties")
开始在 Java 中返回 null 10. 知道为什么吗? appProperties
定义如下:
appProperties = new Properties();
这发生在静态方法中,以防相关。
文件存在于 src/main/resources/application.properties
中。无论我是 运行 来自 IntelliJ 还是来自 Maven 生成的 jar,都会发生这种情况。
我尝试添加:
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
我的 pom.xml
但是没有效果。
打印 class 路径:
System.getProperty("java.class.path")
产量,作为第一个条目:
C:\Users\pupeno\Documents\Dashman\code\dashman\target\classes
其中包含 application.properties.
我找到了一个解决方案,虽然我不完全理解为什么这行得通而有问题的行却行不通,但这行得通:
Application.class.getResourceAsStream("/application.properties")
其中 Application
在我的应用程序中只是一个 class。
也许这与Application.class
正在使用my class加载器和appProperties.getClass()
正在使用系统 class 装载程序。但是为什么它在 Java 8 和 10 上的表现不同并不明显。
该变量的 class 是一个系统 class,它由不同的 class 加载程序加载。
您应该使用自己的 classes.
我在使用 Intellij 时遇到了同样的错误,解决方法是我需要添加我打算获取的特定资源的文件格式。导航 CRTL+ALT+s 或设置->编译器->资源模式: 在该字段中输入文件扩展名。点击应用,然后okay