繁体   English   中英

在 openjdk 11 中获取资源

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM