[英]Get Resource in openjdk 11
Classx.class.getResource("/com/sun/java/swing/plaf/windows/icons/ListView.gif");
Classx.class.getResource("/javax/swing/plaf/metal/icons/ocean/expanded.gif");
我如何获得在 JDK 8 上运行的 JDK 11 的资源?
我试过 getClass()、ClassLoader,但我得到的是 null。
您必须使用 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
class 中的方法与路径交互。例如:
try (InputStream is = Files.newInputStream(p1)) {
// use is
}
在 OpenJDK 11 中,默认情况下不包含 resources.jar 库。 所以你必须手动添加资源 jar 文件。
如果您检查 java 8 lib 目录,则会有一个包含所有这些图标的resources.jar
文件。 在 OpenJDK 11 中它不存在。 像 XML 绑定和从标准 java 11 package 中删除的其他库。
请添加外部库并使用您的代码获取资源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.