2017-05-11 4 views
0

Ich bin sehr neu in Spring Framework. Ich verwende NetBeans für IDE. Ich folgte ein paar Tutorials, um es selbst zu lernen. Ich stecke jedoch in der Mitte fest und kann nicht weitermachen. Lassen Sie mich Zusammenbruch mein Projekt hier:NoSuchBeanDefinitionException: Keine Bean namens 'FirstPage' ist definiert

Mein Projektordner Struktur sieht wie folgt aus:

Folder Structure Image

Es gibt zwei Klassen; die große Gefahr, MainApp.java enthält folgenden Code:

package com.myprojects.spring; 

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class MainApp { 
    public static void main(String[] args) { 
     ApplicationContext context; 
     context = new ClassPathXmlApplicationContext("classpath*:beans.xml"); 
     FirstPage obj; 
     obj = (FirstPage) context.getBean("firstPage"); 
     obj.getMessage();  

    } 
} 

Zweite Klasse Datei FirstPage.java wie folgt aussieht:

package com.myprojects.spring; 

public class FirstPage { 

    private String message; 

    public void setMessage(String message){ 
     this.message = message; 
    } 
    public void getMessage(){ 
     System.out.println("Your Message : " + message); 
    } 

} 

Die beans.xml Datei sieht wie folgt:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.0.RELEASE.xsd 
"> 
    <bean id = "firstPage" class = "com.myprojects.spring.FirstPage"> 
     <property name = "message" value = "Hello World!"/> 
    </bean> 

</beans> 

Jetzt die Fehler Ich erhalte ist wie unten:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'firstPage' is defined

Ich weiß, ich habe hier einige dumme Fehler gemacht haben. Vielen Dank im Voraus!

Antwort

0

Fast ähnliches Problem wurde diskutiert before. Ich denke, Ihr Programm kann beans.xml nicht finden.

Versuch dies zu tun:

context = new ClassPathXmlApplicationContext("META-INF/beans.xml"); 

EDIT:

XmlBeanDefinitionStoreException Dieser neue Fehler bedeutet, dass Ihr Schema nicht gültig ist. Versuchen Sie Ihr Schema ändern, wie in einer dieser Antworten beschrieben:

  1. https://stackoverflow.com/a/21525719/2815219
  2. https://stackoverflow.com/a/25782515/2815219
  3. Spring configuration XML schema: with or without version?

    <?xml version="1.0" encoding="UTF-8"?> 
    <beans xmlns="http://www.springframework.org/schema/beans" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns:context="http://www.springframework.org/schema/context" 
         xsi:schemaLocation="http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
         http://www.springframework.org/schema/context 
         http://www.springframework.org/schema/context/spring-context-4.0.xsd"> 
    
        <bean id = "firstPage" class = "com.myprojects.spring.FirstPage"> 
         <property name = "message" value = "Hello World!"/> 
        </bean> 
    </beans> 
    
+0

Ich versuchte nur, dass aber endete in einem anderen Pfad Fehler auf: '.XmlBeanDefinitionStoreException: Linie 5 in XML-Dokument aus Pfad Ressourcenklasse [META-INF/beans.xml] ist invalid' –

+0

@SajhaParty, dass die Antwort auf diese Frage löst spricht an. Jetzt kann Ihr Frühling tatsächlich 'beans.xml' finden. Es ist ein anderes Problem, dass es dieses XML nicht parsen kann. –

+0

@SajhaParty Ich habe meine Antwort aktualisiert, um 'XmlBeanDefinitionStoreException XML document ... invalid' Ausnahme zu lösen. –

0

Put beans.xml außerhalb Meta-inf,

oder neuen ClassP verwenden athXmlApplicationContext ("META-INF/beans.xml");

Und http://www.springframework.org/schema/beans/spring-beans-4.0.0.RELEASE.xsd

sollte

http://www.springframework.org/schema/beans/spring-beans-4.0.0.xsd ändern, da die Feder XSD Dateinamen enthalten keine "RELEASE".

Die xsd-Dateien befinden sich im Paket org.springframework.beans.factory.xml in spring-beans.jar, sehen Sie, ob sich die xsd-Datei in diesem Paket befindet.

0

Entsprechend der von Ihnen geposteten Verzeichnisstruktur ist es sehr wahrscheinlich, dass sich src/main/resources auf Ihrem Klassenpfad befindet. Wenn Sie Ihre Spring-Kontextdatei beans.xml referenzieren möchten, müssen Sie sie relativ zu den Ordnern in Ihrem Klassenpfad angeben. Daher sollten Sie versuchen:

context = new ClassPathXmlApplicationContext("classpath:/META-INF/beans.xml"); 

Zudem: die Notation classpath*:beans.xml bedeutet, dass Sie alle Kontextdateien mit einem Namen beans.xml lesen in möchten.

0

Die folgenden zwei Dinge haben mein Problem gelöst.

1) Es gab einen falschen Pfad beans.xml. Ich änderte das zu context = new ClassPathXmlApplicationContext("META-INF/beans.xml");.

2) Außerdem gab es einen ungültigen xsi: schemaLocation Attributwert. Ich habe den Wert dieses Attributs auf http://www.springframework.org/schema/beans/spring-beans-3.0.xsd geändert.

Vielen Dank für Ihre Hilfe.

Verwandte Themen