我正在使用基於Java的配置的Spring 3.2,並且在單元測試(JUnit 4.8.1)中遇到了一些問題。所以這是一個測試運行:使用基於Java的配置的Spring 3.2單元測試
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={TestConfig.class})
public class ManualTest
{
@Autowired
...
Howeever,我收到此錯誤:
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: [testConfig]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:327)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:222)
隨着Spring blog狀態,彈簧3.2內嵌CGLIB 3.那麼,爲什麼我收到此錯誤?
我使用Gradle 1.3作爲構建管理工具,STS作爲IDE。當調用gradle eclipse
gradle這個在依賴拉兩次:一次爲普通罐子和一個時間庫:
首先以純的jar:
比爲庫:
在普通的jar部分中,我仍然配置了Spring 3.1,而在庫部分中有Spring 3.2。所以我刪除了普通的罐子,一切正常。
這是我的項目的build.gradle
configurations
{
driver
}
dependencies
{
driver 'com.oracle:ojdbc6:11.2.0'
compile "org.springframework:spring-jdbc:$springVersion"
testCompile 'com.oracle:ojdbc6:11.2.0'
testCompile "org.springframework:spring-test:$springVersion"
testCompile "commons-dbcp:commons-dbcp:$dbcpVersion"
testCompile "junit:junit:$junitVersion"
testCompile "org.slf4j:slf4j-log4j12:$slf4jVersion"
}
sourceSets
{
main
{
java
{
srcDirs 'src/main/java', "$buildDir/generated-sources/"
}
}
}
而且從主項目
configure(allprojects)
{
ext.dbcpVersion = '1.4'
ext.springVersion = '3.2.0.RELEASE'
ext.junitVersion = '4.8.1'
ext.slf4jVersion = '1.7.2'
}
subprojects
{
// Artifact settings
group = 'xxx'
version = '1.0-SNAPSHOT'
// Standard plugins
apply plugin: 'java'
apply plugin: 'eclipse'
// Repositories
repositories
{
mavenLocal()
maven
{
url "http://repo.springsource.org/release"
}
mavenCentral()
}
// Standard dependencies
dependencies
{
}
}
你可以發佈你的classpath內容嗎?或如果使用maven pom.xml? – ElderMael
它在Eclipse和Gradle命令行中都失敗了嗎? – artbristol
僅適用於Eclipse(STS)。 – ChrLipp