ass*_*ias 6 java jmockit java-platform-module-system java-9
当我运行此测试时(使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
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)
....
Run Code Online (Sandbox Code Playgroud)
我正在使用build 177.
我可以使用--add-reads java.base=java.desktop参数重新运行测试,它工作正常,但我真的不明白这里发生了什么.
为什么我得到那个例外?
IllegalAccessError提示JMockit已经在java.desktop模块中引用了异常的ProcessBuilder(在java.base中).我不知道它为什么选择这个例外,这可能是JMockit邮件列表的内容.但它确实解释了为什么要--add-reads修复这个问题.
| 归档时间: |
|
| 查看次数: |
618 次 |
| 最近记录: |