所以,我有一个依赖于jetty.jar编译的代码库,我想运行一些GWT测试用例。当我尝试运行测试时出现此错误:
java.lang.SecurityException:密封违规:无法密封包org.mortbay.util:已经加载
我知道这是由包含org.mortbay.util包的jetty.jar和gwt-dev.jar引起的。我已经使jetty.jar成为了一个提供的依赖项,但它似乎仍然包含在Test类路径中。
有没有办法告诉Intellij从我的GWT单元测试中排除jetty.jar?
解答:
Intellij没有提供在测试期间排除的方法,他们建议创建一个我无法工作的新模块。我确实找到了解决方法,这确实解决了我的问题。我创建了一个包含所有重要GWT jar的新库,并将其命名为GWTRuntime,然后将其作为运行时范围添加到顶部。这允许jetty.jar在编译期间是第一个,gwt-dev.jar在运行时是第一个。在测试运行期间,所有类都在gwt-dev.jar中找到,因此从不加载jetty.jar。