gpt4 book ai didi

java - 模块 java.base 不读取模块 java.desktop

转载 作者:搜寻专家 更新时间:2023-10-31 08:31:44 25 4
gpt4 key购买 nike

当我运行此测试时(使用 jmockit 和 TestNG,不确定是否相关):

public class Test {
@Test public void test(@Mocked ProcessBuilder pb) throws IOException {
new Expectations() {{ pb.start(); result = null; }};
assertNull(m());
}

public static Process m() throws IOException {
return new ProcessBuilder("").start();
}
}

我得到这个异常:

java.lang.IllegalAccessError: class java.lang.ProcessBuilder (in module java.base) cannot access class javax.print.PrintException (in module java.desktop) because module java.base does not read module java.desktop

at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java)
....

我正在使用 build 177。

我可以使用 --add-reads java.base=java.desktop 参数重新运行测试,它工作正常,但我真的不明白这里发生了什么。

为什么我会收到该异常?

最佳答案

IllegalAccessError 暗示 JMockit 已使用对 java.desktop 模块中的异常的引用来检测 ProcessBuilder(在 java.base 中)。我不知道它为什么选择这个异常(exception),这可能是 JMockit 邮件列表的原因。然而,它确实解释了为什么 --add-reads 解决了这个问题。

关于java - 模块 java.base 不读取模块 java.desktop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45018360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com