Проблема:
Решение:
Имеется maven-проект веб-приложения, у него есть следующая зависимость:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
Есть некий класс, использующий servlet-api (расширующий HttpServlet). Для него написан unit-тест, при попытке выполнить который валится ошибка:
org.apache.maven.surefire.util.SurefireReflectionException: java.lang.reflect.InvocationTargetException; nested exception is java.lang.reflect.InvocationTargetException: null
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
Caused by: java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/http/HttpServlet
at java.lang.ClassLoader.defineClass1(Native Method)
...
Причина:
javaee-web-api не может быть использован при выполнении java-кода, т.к. не содержит тел методов.
Решение:
Добавить test-зависимость, содержащую имплементацию servlet-api, например:
<dependency>
<groupId>tomcat</groupId>
<artifactId>servlet</artifactId>
<version>4.1.36</version>
<scope>test</scope>
</dependency>
Комментариев нет:
Отправить комментарий