Добрый день,
Есть тест, который работает внутри spring container:
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { InfrastructureContextConfiguration.class })
public class SomeTest {
}
В классе InfrastructureContextConfiguration инициализируются Spring-бины, необходимые для реализаций jpa-сервисов.
@Configuration
@ComponentScan(basePackages = {"some.package"})
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = {"somepackagepath"})
public class InfrastructureContextConfiguration {
Запускаю я тестовые метод и получаю ошибку:
Caused by: java.lang.IllegalStateException: Cannot load configuration class: com.savdev.springmvcexample.config.InfrastructureContextConfiguration
...
Caused by: java.lang.IllegalStateException: CGLIB is required to process @Configuration classes. Either add CGLIB to the classpath or remove the following @Configuration bean definitions: [infrastructureContextConfiguration, org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration]
Добавляю зависимость:
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.0</version>
</dependency>
Получаю след. ошибки:
Caused by: java.lang.IllegalStateException: Cannot load configuration class: com.savdev.springmvcexample.config.InfrastructureContextConfiguration
...
Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.util.TraceClassVisitor
Попытался использовать:
<dependency>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
<version>2.2.3</version>
</dependency>
Но там нет этого класса. Нашел его в:
<dependency>
<groupId>asm</groupId>
<artifactId>asm-util</artifactId>
<version>2.2.3</version>
</dependency>
Но теперь получаю ошибку:
Caused by: java.lang.IllegalStateException: Cannot load configuration class: com.savdev.springmvcexample.config.InfrastructureContextConfiguration
...
Caused by: java.lang.IncompatibleClassChangeError: Implementing class
Как самым правильным образом разобраться с проблемой? Как выяснить, какую версию использует спринг и где найти какой то справочник, чтобы не методом тыка подбирать версии и зависимости, а понимать, точно. Какой класс дает IncompatibleClassChangeError. Кто именно использует этот класс. Где найти jar файл. И какую версию?