2012-01-20 68 views
2

当我跑我的春天JUnit测试我得到这个错误信息:春3集成测试 - SessionFactory的inicialization例外

Caused by: 
java.lang.NoSuchMethodError: org/slf4j/impl/StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder; 

....

java.lang.ClassFormatError: JVMCFRE074 no Code attribute specified; class=javax/persistence/PersistenceException, method=<init>()V, pc=0 

你能帮我找到一个该错误消息的原因?似乎我有与slf4j的依赖关系的一些问题 - 但我有他们在项目中。

Test类:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations={"/businessApplicationContextTest.xml"}) 
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true) 
@Transactional 
public class LogicHandlerTest { 

    @SessionFactory 
    SessionFactory sessionFactory; 

@Before 
public void setup() {System.out.println("@Before");} 

@Test 
public void testDummy() { 
    System.out.println("testDummy"); 
    assert(true); 
} 
} 

Spring测试上下文配置:

<!-- DATASOURCE --> 
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>  
    <property name="url"    value="jdbc:hsqldb:mem:test"/>   
    <property name="username"   value="sa"/>   
    <property name="password"   value=""/> 
</bean> 

<!-- SESSION FACTORY --> 
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="com.test.dummyproject.entity"/> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.jdbc.batch_size">100</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.connection.autocommit">true</prop> 
      <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> 
     </props> 
    </property> 
</bean> 

<!-- TRANSACTION MANAGER --> 
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"/> 
</bean> 

依赖(版本从pom.xml中):

hibernate      3.2.3.ga 
    hibernate-annotations   3.3.1.GA 
    hibernate-commons-annotations 3.2.0.Final 
    javaee-api     6.0 
    slf4j-api      1.6.4 
    slf4j-log4j12     1.6.4 

回答

0

原因该错误消息 - 我已经删除的JavaEE 6依赖于我的项目,现在一切正常。 (因为websphere服务器已经包含了javaee 6库)。

0

看来你是不是在您的测试注入SessionFactory对象,

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" auto-wire="byName"> 

@Resource 
SessionFactory sessionFactory 

更新:是一团糟Maven依赖在类路径中添加这些罐子

01.antlr-2.7.6 
02.commons-collections-3.1 
03.dom4j-1.6.1 
04.hibernate3 
05.database specific jar 
06.javassist-3.4.GA 
07.jta-1.1 
08.slf4j-api-1.5.6 
09.slf4j-simple-1.5.6 
+0

我添加了SessionFactory,现在我看到: java.lang.NoSuchMethodError:org/slf4j/impl/StaticLoggerBinder.getSingleton()Lorg/slf4j/impl/StaticLoggerBinder;这意味着我有一些依赖层次结构的confict ... :( – Martin85

+0

我添加了所有必需的罐子。 –

+0

不,它仍然没有工作 – Martin85