模块 java.base 不“打开 java.lang”(Java 17.0.4.1)

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

错误如下:

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected java.lang.ClassLoader() accessible: module java.base does not "opens java.lang" to unnamed module @75dcbabb

另外,我使用maven来编译。感谢您阅读此主题!希望你能帮我解决这个问题!

java java-17
1个回答
11
投票

在 java 17 上,某些内部模块有一些更高的限制。

我不确定您是否在实现代码上遇到此问题或“仅”用于测试。根据我的经验,这个问题在测试中更常见,因为大多数模拟框架都会打破限制......

但是你必须给出这些参数

--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED

如果您需要这个来进行单元测试并使用 Maven,那么您可以使用如下配置:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <argLine>
                        --add-opens=java.base/java.lang=ALL-UNNAMED
                        --add-opens=java.base/java.util=ALL-UNNAMED
                    </argLine>
                </configuration>
            </plugin>
        </plugins>
    </build>
© www.soinside.com 2019 - 2024. All rights reserved.