启动 Payara 6 Micro 时出现警告:发生非法反射访问操作

问题描述 投票:0回答:1

我正在 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 兼容还是只是被遗忘了?

java glassfish java-11 payara payara-micro
1个回答
0
投票

该警告来自

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 不兼容。

© www.soinside.com 2019 - 2024. All rights reserved.