Use jdk.internal.net.http(使用jdk.inder.net.http)
问题描述
我想使用jdk.internal.net.http
中的ResponseSubscribers.ByteArraySubscriber
。我使用的是Openjdk11。
我尝试了两种方法:
1/ 我添加了maven编译器插件导出模块
<compilerArgs>
<arg>--add-exports</arg><arg>java.net.http/jdk.internal.net.http=fr.app</arg>
</compilerArgs>
->编译!
2/ 我创建了模块-info.java
module fr.app {
requires java.net.http;
requires com.fasterxml.jackson.core;
requires com.fasterxml.jackson.databind;
requires com.fasterxml.jackson.datatype.jsr310;
exports fr.app;
exports fr.app.parser;
}
运行使用类导入的junit测试时出错jdk.internal.net.http
我知道fr.app.AppException:java.io.IOException:类fr.app.MyClass$BodySubscribers(在未命名模块@0x6537cf78中)无法访问类jdk.internal.net.http.ResponseSubscribers$ByteArraySubscriber(在模块java.net.http中),因为模块java.net.http不会将jdk.inder.net.http导出到未命名模块@0x6537cf78
BodySubscribers
必须仅在命名模块中导出。但我的模块名为fr.app
,对吗?
推荐答案
但我的模块名为fr.app,对吗?
并非如此,虽然您在项目中创建了module-info.java
,但在应用程序的执行过程中,您的实际代码似乎最终会在类路径上找到。
因此您的MyClass
驻留在the unnamed module中,错误如下
类fr.app.MyClass$BodySubscribers(在未命名的模块中.....
另外,您提到的类似乎是打包到java.net.http
模块的内部,不应该从您的代码中依赖。您必须实现您自己的订阅者,即使您希望获得与您正在查看的代码类似的功能。因为模块无论如何都不会将其导出用于公共用途。
这篇关于使用jdk.inder.net.http的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用jdk.inder.net.http
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01