2009-01-08 5 views
10

Я пробовал выяснять эту проблему в течение последних 2 дней без везения. Я просто пытаюсь создать тест JUnit на основе аннотаций, используя весеннюю структуру вместе с спящим режимом.Нет такого метода Ошибка при создании теста JUnit

My IDE is netbeans 6.5, и я использую hibernate 3, spring 2.5.5 и JUnit 4.4.

Вот ошибка я получаю:

Testcase: testFindContacts(com.mycontacts.data.dao.MyContactHibernateDaoTransactionTest):  Caused an ERROR 
Failed to load ApplicationContext 
java.lang.IllegalStateException: Failed to load ApplicationContext 
     at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:203) 
     at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109) 
     at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75) 
     at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:255) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:93) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:130) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [shared-context.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1337) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381) 
     at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:84) 
     at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:42) 
     at org.springframework.test.context.TestContext.loadApplicationContext(TestContext.java:173) 
     at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:199) 
Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V 
     at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47) 
     at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30) 
     at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24) 
     at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216) 
     at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144) 
     at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116) 
     at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108) 
     at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104) 
     at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:69) 
     at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:117) 
     at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:43) 
     at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162) 
     at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:135) 
     at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55) 
     at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56) 
     at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:295) 
     at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434) 
     at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109) 
     at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55) 
     at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226) 
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294) 
     at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859) 
     at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:814) 
     at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:732) 
     at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334) 
+0

Это проблема конфигурации (путь класса) с netbeans 6.5. Я скопировал проект на затмение, и он работает отлично. – IaCoder

+0

Я получаю эту ОШИБКУ, даже если в Eclipse я пытался с 1.5/3.1/4.0. –

ответ

19

java.lang.NoSuchMethodError всегда указывает, что версия класса, которая находилась в пути к вашему пути к компилятору, отличается от версии класса, который находится в вашем пути к среде выполнения (если во время компиляции отсутствовал метод, компиляция не удалась .)

В этом случае у вас была другая версия org.objectweb.asm.ClassWriter во время компиляции, чем в вашем пути к среде выполнения.

+0

Что вы подразумеваете под «версией отличается»? это недостающий метод в классе выполнения или какое-либо изменение в классе выполнения? Я полагаю, что компиляция чего-то с классом, который затем получает новое статическое поле (не относящееся к делу) и используется во время выполнения, не выбрасывает эту ошибку? – lisak

+1

просто сказать, что он не всегда указывает, что это другая версия, но может также быть, что одна и та же версия загружается дважды. У меня была эта проблема на днях. Чтобы далее сузить, где возникает проблема, запустите свой vm с помощью '-class: verbose', который отображает все загруженные классы и откуда –

+1

Это' -verbose: class' – T3rm1

1

Я думаю, что вы подбирая неправильную версию asm.jar где-то в пути к классам вы используете для ваших тестов.

2

Определенно, у вас разные версии класса ClassWriter во время выполнения, кроме времени компиляции.

1

У меня была аналогичная ошибка с использованием Spring 2.5 с Hibernate на NetBeans 6.5. Один из способов решить проблему - загрузить Spring 3.0 M2 и создать библиотеку NetBeans, которую я назвал Spring_3, используя банки из дистрибутива. Эта библиотека также должна была включать antlr-runtime-3.0.jar.

См: http://forum.springsource.org/showthread.php?t=65324

-Leo

0

Я хотел бы поделиться с моим предложением для тех, кто приходит через этот JUnit тестирования для Android; ни один из вышеперечисленных не работал для меня, и это было простым исправлением:

В Eclipse>>project properties>>Android>> убедитесь, что проект, на который вы тестируете, ссылается в разделе «Библиотека». 'is library' может оставаться непроверенным

 Смежные вопросы

  • Нет связанных вопросов^_^