我正在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从命令行运行时,我不会收到任何这样的错误。
我在其他地方看到过类似的问题,我确保我有实现jars,而不仅仅是API jars。我的maven依赖项如下
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet</artifactId>
<version>10.0-b28</version>
<scope>test</scope>
</dependency>我花了太多的时间在这上面,摆弄我的类路径,多次清理我的工作空间,但都没有效果。
发布于 2013-01-30 22:48:43
我刚刚创建了一个简单的测试:
@Test
public void test(){
HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
System.out.println(request);
}与我的日食和依赖提供的你-一切正常工作,没有例外.在eclipse中,您可能在类路径上有其他内容,或者问题可能来自不同的行。
您可以尝试使用(例如)检查使用哪个jar。
HttpServletRequest.class.getProtectionDomain().getCodeSource()您还可以考虑使用httpunit而不是模拟请求。
https://stackoverflow.com/questions/14615039
复制相似问题