我在 Eclipse 中运行一些单元测试,我使用 Mockito 模拟如下:-
HttpServletRequest mockRequest = mock(HttpServletRequest.class);
当我从Eclipse 中运行测试时,我得到以下堆栈跟踪
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/ServletException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
但是,当使用 maven 从命令行运行时,我没有收到任何此类错误
我在其他地方看到过类似的问题,并且我确保我有实现 jar 而不仅仅是 API jar。我的maven依赖如下
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>10.0-b28</version>
<scope>test</scope>
</dependency>
我在这方面花了太多时间,摆弄我的类路径并多次清理我的工作区,但无济于事。