java - (Java 11+)模块的类 getResource URL 是否应该包含 /modules 前缀?
问题描述
返回的 URLClass.getResource
不包括/modules
模块资源,但可以从 URL 加载内容。但是,当使用 nio 时,路径开头的FileSystem
期望:/modules
URL url = String.class.getResource("String.class");
System.out.println(url); // jrt:/java.base/java/lang/String.class
try (InputStream in = url.openStream()) {
in.readAllBytes(); // Success
}
Path path = Path.of(URI.create("jrt:/modules/java.base/java/lang/String.class"));
System.out.println(path); // /modules/java.base/java/lang/String.class
Files.readAllBytes(path); // Success
path = Path.of(url.toURI());
System.out.println(path); // /java.base/java/lang/String.class
Files.readAllBytes(path); // NoSuchFileException
这些方法之一 ( URL
/ Path
) 不正确吗?似乎在 URI 之间保持一致性会很好。
解决方案
看起来不一致已在 JDK13b23 中修复:
https ://bugs.java.com/bugdatabase/view_bug.do?bug_id=8216553
推荐阅读
- c++ - 放宽内存顺序的原子加载和存储
- c++ - 以 Eigen 类型为参数的泛型函数回调
- r - 什么函数允许我根据 R 中列中的值从数据框中的列中提取数据?
- javascript - 使用 jQuery DataTable 如何通过在 C# 应用程序中调用 javascript 函数来启用/禁用列排序?
- java - Bluetooth scanner causing activity to clear
- reactjs - 如何同步从 Web API 后端发送到 React/Redux 前端的对象类型
- php - php 7 pdo mysql regexp 将变量放入查询中
- https - HTTPS 和安全 Websockets 说明
- c - 传递参数使指针从整数而不进行强制转换
- python - 如何在 Python 中对变量重新分配进行单元测试