Совместимость с Easymock3 Spring4.0.0.RELEASE cglib

Я последовал совету, данному здесь, чтобы попробовать некоторые модульные тесты с методами Spring AOP. . Однако я подозреваю, что переупакованные классы cglib в spring-core и cglib-nodep-2.2.jar конфликтуют друг с другом, в результате чего мой класс, проксируемый через прокси, дважды загружается загрузчиком классов. Это приводит к следующей ошибке:

Caused by: java.lang.LinkageError: loader (instance of  sun/misc/Launcher$AppClassLoader): attempted  duplicate class definition for name:

Инструменты:

  1. easmock-3.0 (с переходной зависимостью cglib-nodep-2.2.jar)
  2. spring-x-4.0.0.RELEASE (с перепакованной cglib классов версии ?)
  3. Юнит-4.8.1

Исключение транзитивной зависимости cglib-nodep явно не помогло — все тесты, в том числе и не-sring-aop, тоже начали давать сбои.

Я также попробовал ответ, опубликованный здесь: очистить целевую папку перед повторным запуском тестов, но безуспешно.

Эта проблема действительно из-за конфликта версий cglib, как я думал? Если да, то какую правильную версию я должен использовать, чтобы дважды не загружать мой класс.


person mystarrocks    schedule 13.02.2014    source источник
comment
Проверьте, какие все зависимости используются. Проверьте папку WEB-INF/lib или используйте представление иерархии зависимостей в редакторе eclipse pom, чтобы узнать дубликаты банок, удалите старую версию.   -  person Santosh Joshi    schedule 13.02.2014
comment
Я сделал, в семействе cglib не было дубликатов. Разработчики Spring переупаковали классы cglib в свое ядро ​​Spring, что означает, что cglib не является транзитивной зависимостью, которая будет отображаться в представлении зависимостей pom, чтобы мы могли обнаружить повторяющиеся версии.   -  person mystarrocks    schedule 13.02.2014
comment
вы можете оформить заказ по следующей ссылке: jira.springsource.org/browse/SPR-10242   -  person Santosh Joshi    schedule 13.02.2014
comment
Это именно то, о чем я говорил, чтобы сделать вывод, что это может быть конфликт версий cglib! Нравится сообщение: jira.springsource.org/browse/ говорит, что они хотят, чтобы мы использовали переупакованные классы cglib-3.0 вместо любой другой библиотеки cglib с spring-3.2. Однако в моем случае cglib-nodep, который поставляется с easymock, содержит больше, чем просто то, что доступно с Spring для его работы. Это проблема.   -  person mystarrocks    schedule 13.02.2014
comment
Насколько я знаю, Spiring 4 использует перепакованную версию cglib 3. Это может быть конфликт ASM в канализации. Вы пробовали обновить cglib?   -  person Rafael Winterhalter    schedule 14.02.2014
comment
Я сделал. Я пробовал как cglib 3, так и cglib 3.1, но безуспешно.   -  person mystarrocks    schedule 14.02.2014


Ответы (1)


person    schedule
comment
Вы понимаете возраст этого вопроса? - person jwenting; 03.07.2017