2014-12-27 11 views
5

@ComponentScanning:IllegalStateException - Aşağıdaki öğretici ile çalıştığımız Spring Framework paketi

http://spring.io/guides/gs/rest-service/

Başlangıçta (düzgün çalışması bitmiş öğretici Run kodu almak başardı, bir HTTP mesajı göndermek ve doğru cevabı alın) ve başarılı bir şekilde genişletin.

ayrıca genişleyen sonra, şu istisna koştu:

java.lang.IllegalStateException: Could not evaluate condition on org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration#propertySourcesPlaceholderConfigurer due to internal class not found. This can happen if you are @ComponentScanning a springframework package (e.g. if you put a @ComponentScan in the default package by mistake) 
    at org.springframework.boot.autoconfigure.condition.SpringBootCondition.matches(SpringBootCondition.java:51) 
    at org.springframework.context.annotation.ConditionEvaluator.shouldSkip(ConditionEvaluator.java:92) 
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:174) 
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:136) 
    at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:116) 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:330) 
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:243) 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:254) 
    at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:94) 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:611) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:109) 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:961) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:950) 
    at com.aharrison.hello.Application.main(Application.java:15) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 

geri aşağı örnekte gösterildiği sadece ne kod elimden, ama yine de istisna yaşıyorum beri var.

Çok Bahar ile deneyimli değilim

https://github.com/spring-projects/spring-boot/issues/2050

, bu yüzden tam olarak idrak edemez şeydir: işaretlenmesine karşın kapalı olarak

Ben, muhtemelen aşağıdaki sorunla ilgili olabileceğini düşünüyorum Tartışılmakta.

Greeting.java:

package com.aharrison.hello; 

public class Greeting { 
    private final long id; 
    private final String content; 

    public Greeting(long id, String content) { 
     this.id = id; 
     this.content = content; 
    } 

    public long getId() { 
     return id; 
    } 

    public String getContent() { 
     return content; 
    } 
} 

GreetingController:

package com.aharrison.hello; 

import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.bind.annotation.RestController; 

import java.util.concurrent.atomic.AtomicLong; 

@RestController 
public class GreetingController { 
    private static final String template = "Hello, %s!"; 
    private final AtomicLong counter = new AtomicLong(); 

    @RequestMapping("/greeting") 
    public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { 
     return new Greeting(counter.incrementAndGet(), String.format(template, name)); 
    } 
} 

Application.java: Burada

benim şimdiki sınıflardır

package com.aharrison.hello; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.context.annotation.ComponentScan; 

/** 
* Created by Adam on 12/26/2014. 
*/ 
@ComponentScan 
@EnableAutoConfiguration 
public class Application { 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.aharrison</groupId> 
<artifactId>SpringRestAPI</artifactId> 
<version>1.0-SNAPSHOT</version> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <version>1.2.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>4.1.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-mongodb</artifactId> 
     <version>1.6.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mongodb</groupId> 
     <artifactId>mongo-java-driver</artifactId> 
     <version>2.12.2</version> 
    </dependency> 
</dependencies> 

Sorular:

bu durumda istisna neden olan şey nedir
  1. ? Yukarıdaki kodumda bir sorun mu var, yoksa sorunlu ortamla mı ilgili?
  2. Kural dışı durum "..proplicationScan'ı varsayılan pakete yanlışlıkla koyar" diyorsa, bu varsayılan paket hangisidir? Bu mevcut duruma uygulanabilir mi?

Şimdiden teşekkürler.

+0

[bu bağlantıyı kontrol et] (http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-build-systems) bu belgenin yayı nasıl yapılandırılacağı konusunda net bir açıklaması vardır. maven kullanarak önyükleme uygulaması. –

+0

Görünüşe göre bu soru trafik almaya devam ediyor. Dürüst olmak gerekirse, bu konuya öncülük eden yıllarda çalışmıyorum. Bir çözüm bulamadığım bir cevabı asla kabul etmedim; Bu kötü bir form varsa bana bildirin. Herkese iyi şanslar. –

cevap

2

Sağladığınız kodu çalıştırdığımda her şey düzgün çalışıyor.

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.2.0.RELEASE</version> 
</parent> 

Bütün bu Bahar Boot mekanizmasını sağlayan ve uygulamayı başlatmak edebilmek için gereklidir: Aşağıdaki eklenen nerede yapmak zorunda tek değişiklik pom.xml oldu.

benim test vadede başarılı çıkış için aşağıya bakın:

. ____   _   __ _ _ 
/\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \ 
(()\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 
\\/ ___)| |_)| | | | | || (_| | )))) 
    ' |____| .__|_| |_|_| |_\__, |//// 
=========|_|==============|___/=/_/_/_/ 
:: Spring Boot ::  (v1.2.0.RELEASE) 

2014-12-27 17:41:12.472 INFO 4065 --- [   main] com.aharrison.hello.Application   : Starting Application on My-MacBook-Pro.local with PID 4065 (/Users/wassgren/test/target/test-classes started by wassgren in /Users/wassgren/test/test-di) 
2014-12-27 17:41:12.506 INFO 4065 --- [   main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot[email protected]4a668b6e: startup date [Sat Dec 27 17:41:12 CET 2014]; root of context hierarchy 
2014-12-27 17:41:13.407 INFO 4065 --- [   main] o.s.b.f.s.DefaultListableBeanFactory  : Overriding bean definition for bean 'beanNameViewResolver': replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]] 
2014-12-27 17:41:14.186 INFO 4065 --- [   main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration' of type [class org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 
2014-12-27 17:41:14.703 INFO 4065 --- [   main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080/http 
2014-12-27 17:41:15.047 INFO 4065 --- [   main] o.apache.catalina.core.StandardService : Starting service Tomcat 
2014-12-27 17:41:15.048 INFO 4065 --- [   main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.0.15 
2014-12-27 17:41:15.154 INFO 4065 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]  : Initializing Spring embedded WebApplicationContext 
2014-12-27 17:41:15.154 INFO 4065 --- [ost-startStop-1] o.s.web.context.ContextLoader   : Root WebApplicationContext: initialization completed in 2651 ms 
2014-12-27 17:41:16.399 INFO 4065 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/] 
2014-12-27 17:41:16.404 INFO 4065 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 
2014-12-27 17:41:16.404 INFO 4065 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 
2014-12-27 17:41:16.907 INFO 4065 --- [   main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot[email protected]4a668b6e: startup date [Sat Dec 27 17:41:12 CET 2014]; root of context hierarchy 
2014-12-27 17:41:16.979 INFO 4065 --- [   main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/greeting],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public com.aharrison.hello.Greeting com.aharrison.hello.GreetingController.greeting(java.lang.String) 
2014-12-27 17:41:16.981 INFO 4065 --- [   main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 
2014-12-27 17:41:16.981 INFO 4065 --- [   main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],methods=[],params=[],headers=[],consumes=[],produces=[text/html],custom=[]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest) 
2014-12-27 17:41:17.013 INFO 4065 --- [   main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2014-12-27 17:41:17.014 INFO 4065 --- [   main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2014-12-27 17:41:17.059 INFO 4065 --- [   main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2014-12-27 17:41:17.206 INFO 4065 --- [   main] o.s.j.e.a.AnnotationMBeanExporter  : Registering beans for JMX exposure on startup 
2014-12-27 17:41:17.292 INFO 4065 --- [   main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080/http 
2014-12-27 17:41:17.294 INFO 4065 --- [   main] com.aharrison.hello.Application   : Started Application in 5.245 seconds (JVM running for 6.088) 
+0

Cevabınız için teşekkürler! Bağımlılığı ekledim ve hala sorun yaşıyorum. Uygulama çıktımı sizinkiyle karşılaştırdıktan sonra, ikinci mesajın hemen ardından başarısız olurum: "ationConfigEmbeddedWebApplicationContext". Bunun yerine, aşağıdaki alıyorum: "2014/12/27 16: 09: 44,528 INFO 880 --- [ana] .blClasspathLoggingApplicationListener: Uygulama sınıfyoluna ile başlatılamadı:" \ n "2014-12- 27 16: 09: 44.541 HATA 880 --- [main] osboot.SpringApplication: Uygulama başlatılamadı "\ n Yukarıda belirtilen istisna uygulandı. –

0

Bahar Boot 1.2.2 yayınlandı, önemli sayıda düzeltmelerle birlikte yeni sürüme yükseltmeyi öneririm. Ayrıca bahar güvenliğini kullanır 3.2.6. Önyükleme zaten birçoğu ile geldiğinden, varsayılan olarak gelenler dışındaki herhangi bir veya geçersiz kılma bağımlılığını bildirdiğinizde çok dikkatli olmanız gerekir. Ben ilkbahar baharı 3.2.5 ile bahar önyükleme 1.2.2 kullanmakla aynı sorun vardı ama bahar önyükleme 1.2.1 geri döndüğümde her şey iyiydi.

1

Uygulama sınıfının üstünde yer alan @ComponentScan öğesini kaldırın. @SpringBootApplication, taranması gereken sınıfların Uygulama sınıfı ile aynı pakette olması durumunda, varsayılan olarak ekler.

İlgili konular