2014-12-27 7 views
5

मैं निम्नलिखित ट्यूटोरियल के माध्यम से काम कर रहा है @ComponentScanning:IllegalStateException - एक springframework पैकेज

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

मैं शुरू में सही ढंग से काम करने के लिए (भागो ट्यूटोरियल समाप्त कोड प्राप्त करने में सक्षम था, एक HTTP संदेश भेजने और सही प्रतिक्रिया प्राप्त करें) और सफलतापूर्वक इसका विस्तार करें।

आगे के विस्तार के बाद, मैं निम्नलिखित अपवाद में भाग:

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) 

के बाद वापस केवल क्या उदाहरण में दिखाया गया है करने के लिए नीचे कोड छीन, लेकिन मैं अभी भी अपवाद का सामना कर रहा हूँ मैं है।

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

मैं बहुत वसंत के साथ अनुभव नहीं कर रहा हूँ, तो मैं पूरी तरह से समझ नहीं सकता क्या है:

मैं बंद कर दिया के रूप में हालांकि यह चिह्नित है लगता है कि यह संभवतः निम्न समस्या से संबंधित हो सकता, विचार - विमर्श किया जा रहा है।

यहाँ मेरे वर्तमान वर्ग हैं:

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:

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> 

सवाल:

  1. क्या इस स्थिति में अपवाद उत्पन्न कर रहा है? क्या ऊपर मेरे कोड के साथ कुछ गड़बड़ है, या समस्या पर्यावरण से संबंधित है?
  2. जब अपवाद कहता है ".. अगर आप गलती से डिफ़ॉल्ट पैकेज में @ कॉम्पोनेंटस्कैन डालते हैं", तो यह डिफ़ॉल्ट पैकेज है जिसका संदर्भ है? क्या यह वर्तमान स्थिति पर लागू है?

अग्रिम धन्यवाद।

+0

[इस लिंक को चेक करें] (http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-build-systems) इस दस्तावेज़ में वसंत को कॉन्फ़िगर करने के तरीके पर स्पष्ट स्पष्टीकरण है मेवेन का उपयोग कर बूट आवेदन। –

+0

स्पष्ट रूप से यह प्रश्न यातायात प्राप्त करता रहता है। मैं ईमानदारी से वर्षों में इस मुद्दे पर जो कुछ भी नेतृत्व कर रहा हूं उस पर काम नहीं कर रहा हूं। मैंने कभी जवाब नहीं स्वीकार किया क्योंकि मुझे कोई समाधान नहीं मिला; अगर मुझे बुरा फॉर्म है तो मुझे बताएं। शुभकामनाएं हर कोई। –

उत्तर

2

जब मैं आपके द्वारा प्रदान किया गया कोड चलाता है तो सब कुछ ठीक काम करता है।

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

इस पूरे स्प्रिंग बूट तंत्र सक्षम बनाता है और लिए यह आवश्यक है कि आप आवेदन शुरू करने के लिए सक्षम होने के लिए के लिए: जहां मैं निम्नलिखित जोड़ा केवल परिवर्तन मैं करना था pom.xml में था।

अपने परीक्षण रन से सफल उत्पादन के लिए नीचे देखें:

. ____   _   __ _ _ 
/\\/___'_ __ _ _(_)_ __ __ _ \ \ \ \ 
(()\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 
\\/ ___)| |_)| | | | | || (_| | )))) 
    ' |____| .__|_| |_|_| |_\__, |//// 
=========|_|==============|___/=/_/_/_/ 
:: 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

आपकी प्रतिक्रिया के लिए धन्यवाद! मैंने निर्भरता को जोड़ा और अभी भी समस्याओं का सामना कर रहा हूं। मेरे एप्लिकेशन आउटपुट की तुलना करने के बाद, मैं दूसरे संदेश के ठीक बाद विफल रहता हूं: "ationConfigEmbeddedWebApplicationContext"। इसके बजाय, मैं निम्नलिखित मिल: "2014-12-27 16: 09: 44.528 जानकारी 880 --- [मुख्य] ​​.blClasspathLoggingApplicationListener: आवेदन classpath के साथ प्रारंभ करने में विफल:" \ n "2014-12- 27 16: 09: 44.541 त्रुटि 880 --- [मुख्य] ​​osboot.Spring आवेदन: अनुप्रयोग स्टार्टअप विफल "\ n ऊपर पोस्ट अपवाद द्वारा पीछा किया गया। –

0

स्प्रिंग बूट 1.2।2 जारी किया गया है, मैं नए संस्करण में अपग्रेड करने की सलाह दूंगा क्योंकि यह बड़ी संख्या में फिक्स के साथ आता है। इसके अलावा यह वसंत-सुरक्षा 3.2.6 का उपयोग करता है। डिफ़ॉल्ट रूप से आने वाले लोगों के अलावा किसी भी या ओवरराइड निर्भरताओं की घोषणा करते समय आपको बहुत सावधान रहना होगा, क्योंकि बूट पहले से ही इसके साथ आता है। वसंत सुरक्षा 3.2.5 के साथ वसंत बूट 1.2.2 का उपयोग करने में मुझे भी यही समस्या थी, लेकिन जब मैं वसंत बूट पर वापस लुढ़क गया 1.2.1 सबकुछ ठीक था।

1

@ComponentScan को निकालें जो एप्लिकेशन क्लास के ऊपर रखा गया है। @SpringBootAplication इसे डिफ़ॉल्ट रूप से जोड़ता है, यदि कक्षाओं को स्कैन करने की आवश्यकता है तो वे एप्लिकेशन क्लास के समान पैकेज के भीतर हैं।

संबंधित मुद्दे