Classx.class.getResource("/com/sun/java/swing/plaf/windows/icons/ListView.gif");
Classx.class.getResource("/javax/swing/plaf/metal/icons/ocean/expanded.gif");
如何获取JDK 11上的资源,JDK 11正在处理JDK 8?
我已经尝试过getClass((,ClassLoader,但是我得到了null。
错误图像
在OpenJDK 11中,默认情况下不包括resources.jar库。因此,您必须手动添加resources jar文件。
如果检查java8lib目录,则会有一个包含所有这些图标的resources.jar
文件。在OpenJDK 11中,它并不存在。比如从标准java11包中删除的XML绑定和其他库。
请添加外部库并使用您的代码获取资源。
您必须使用jrt文件系统来访问嵌入式资源:
FileSystem jrt = FileSystems.getFileSystem(URI.create("jrt:/"))
Path p1 = jrt.getPath("/modules/java.desktop/com/sun/java/swing/plaf/windows/icons/ListView.gif");
Path p2 = jrt.getPath("/modules/java.desktop/javax/swing/plaf/metal/icons/ocean/expanded.gif");
还要注意,该路径需要/modules/java.desktop
在前面。
从那里,您可以使用Files
类中的方法与路径进行交互。例如:
try (InputStream is = Files.newInputStream(p1)) {
// use is
}