2017-11-08 4 views
3

Ich schreibe ein SSM-Projekt in Kotlin und dies geschieht, solange ich versuche, eine Klasse (eine Service-Implementierung) mit @Service zu kommentieren.Ausnahme bei Verwendung von @Service in Kotlin

  1. Versucht, diese Implementierungsklasse in Java stattdessen zu programmieren und es funktionierte alles in Ordnung.
  2. Versucht, nur die notwendigen übersteuernden Methoden zu behalten.
  3. open wurde bereits hinzugefügt.
  4. context:component-scan ist konfiguriert.

java.lang.IllegalStateException: Failed to load ApplicationContext 

at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125) 
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:107) 
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117) 
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) 
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:242) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) 
at org.junit.runner.JUnitCore.run(JUnitCore.java:137) 
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) 
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) 
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) 
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'seckillServiceImpl' defined in file [blahblah\target\classes\service\impl\SeckillServiceImpl.class]: Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: kotlin/reflect/full/KClasses 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:518) 
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:312) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:756) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) 
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:128) 
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60) 
at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:109) 
at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:246) 
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) 
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117) 
... 24 more 
Caused by: java.lang.NoClassDefFoundError: kotlin/reflect/full/KClasses 
at org.springframework.beans.BeanUtils$KotlinDelegate.findPrimaryConstructor(BeanUtils.java:703) 
at org.springframework.beans.BeanUtils.findPrimaryConstructor(BeanUtils.java:193) 
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:286) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1197) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1122) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:502) 
... 37 more 
Caused by: java.lang.ClassNotFoundException: kotlin.reflect.full.KClasses 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 44 more 

Zusätzliche Informationen:

Relative Strukturen

- src 
    - kotlin 
     - service 
     An interface 
     - impl 
      -> The implementation <- 

nur die notwendigen Methoden

<context:component-scan base-package="service" /> 

Versuchte

@Service 
open class SeckillServiceImpl : SeckillService { 
    override fun getAll(): List<Seckill> { 
     TODO("not implemented") //To change body of created functions use File | Settings | File Templates. 
    } 

    override fun getById(seckillId: Long): Seckill? { 
     TODO("not implemented") //To change body of created functions use File | Settings | File Templates. 
    } 

    override fun exportSeckillUrl(seckillId: Long): SeckillUrlExposer { 
     TODO("not implemented") //To change body of created functions use File | Settings | File Templates. 
    } 

    override fun doSeckill(seckillId: Long, userPhone: Long, md5: String?): SeckillExecutionResult { 
     TODO("not implemented") //To change body of created functions use File | Settings | File Templates. 
    } 
} 

zu halten was falsch ist und was soll ich tun? Vielen Dank!

Antwort

4

Kotlins reflection facilities benötigt von Frühling sind in einem separaten JAR geliefert. Versuchen Sie es in Ihren Build hinzufügen:

build.gradle:

compile 'org.jetbrains.kotlin:kotlin-reflect:1.1.51' 

pom.xml:

<dependency> 
    <groupId>org.jetbrains.kotlin</groupId> 
    <artifactId>kotlin-reflect</artifactId> 
    <version>1.1.51</version> 
</dependency> 
Verwandte Themen