我正在 docker 容器内使用最新版本的
payara-micro-6.2023.8
和 openjdk 11.0.20.1
。启动服务器时,我收到以下警告:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.glassfish.pfl.basic.reflection.Bridge$1 (file:/opt/domain/runtime/pfl-basic.jar) to method java.io.ObjectInputStream.latestUserDefinedLoader()
WARNING: Please consider reporting this to the maintainers of org.glassfish.pfl.basic.reflection.Bridge$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
该警告来自
org.glassfish.pfl.basic.reflection.Bridge
类,是折射调用失败的结果。库和资源是用 Java 8 编译的,这还没有任何意义:
private Method getLatestUserDefinedLoaderMethod() {
return (Method)AccessController.doPrivileged(new PrivilegedAction<Method>() {
public Method run() {
try {
Class io = ObjectInputStream.class;
Method result = io.getDeclaredMethod("latestUserDefinedLoader");
result.setAccessible(true);
return result;
} catch (NoSuchMethodException var3) {
throw new Error("java.io.ObjectInputStream latestUserDefinedLoader " + var3, var3);
}
}
});
}
问题是这个库的用途是什么?它与 Java 11 和 Payara 6 兼容还是只是被遗忘了?
该警告来自
班级,是折射调用失败的结果。org.glassfish.pfl.basic.reflection.Bridge
不,它与“成功”的反射访问相关。如果访问失败,则会抛出异常。请注意警告消息:“所有非法访问操作都将被拒绝在未来版本中[Java]”(已添加强调)。
问题是这个库是用来做什么的org.glassfish.pfl.basic.reflection.Bridge
是主要开源 Java EE 实现 Glassfish 的一部分。它显然与 Payara 捆绑在一起,大概还有许多其他 Glassfish 类。来自其
API 文档: 此类提供 ORB 中所需的基本 JVM 操作的方法,这些操作不属于公共 Java API。
它是 Glassfish 依赖于实现核心 Java EE 行为的基础设施类。
它与 Java 11 和 Payara 6 兼容还是只是被遗忘了?
Payara 6 的一部分。您应该查阅 Payara 文档以获取支持的 Java 版本,但我在您提供的内容中没有看到任何内容让我认为与 Java 11 不兼容。它显然是