java 严重:上下文初始化失败和 org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/26094987/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 09:16:45  来源:igfitidea点击:

SEVERE: Context initialization failed and org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException

javajspspring-mvcjdo

提问by Krishna

I new for spring mvc and jdo and I try to learn I got error of

我是 spring mvc 和 jdo 的新手,我尝试学习我得到的错误

HTTP ERROR 503

HTTP 错误 503

Problem accessing /add. Reason:

访问 /add 时出现问题。原因:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 11 in XML document from ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 28; The prefix "mvc" for element "mvc:annotation-driven" is not bound.

my program of spring mvc is placed here:

我的spring mvc程序放在这里:

person.java:

人.java:

package com.web.project;

import java.util.Date;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import com.google.appengine.api.datastore.Key;




@PersistenceCapable
public class Person {

        // ID or key unique variable 
        @PrimaryKey
        @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
        private Key key;

        // String or integer or other variable related to person
        @Persistent
        private String name ;

        @Persistent
        private String email;

        @Persistent
        private Date date;

        //getter and setter methods

        public void setKey(Key key) {
            this.key = key;
        }

        public void setName(String name) {
            this.name = name;
        }

        public void setEmail(String email) {
            this.email = email;
        }

        public void setDate(Date date) {
            this.date = date;
        }

        public Key getKey() {
            return key;
        }

        public String getName() {
            return name;
        }

        public String getEmail() {
            return email;
        }

        public Date getDate() {
            return date;
        }

        @Override
        public String toString() {
            return "Person [key=" + key + ", name=" + name + ", email=" + email
                    + ", date=" + date + "]";
        }    
}

personalcontroller.java:

个人控制器.java:

package com.web.project;

import java.util.Date;
import java.util.List;

import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import javax.servlet.http.HttpServletRequest;

import com.web.project.Person;

import org.springframework.ui.ModelMap;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class Personalcontroller {
    PersistenceManager pm = PMF.get().getPersistenceManager();
    List<Person> results = null;

    @RequestMapping(value="/add")
    public ModelAndView add(HttpServletRequest request, ModelMap model)
    {
        System.out.println("inside the add service");
        String name = request.getParameter("name");
        String email = request.getParameter("email");


        try
        {
            Person p = new Person();
            p.setName(name);
            p.setEmail(email);
            p.setDate(new Date());

            pm.makePersistent(p);
        }

        finally
        {
            pm.close();
        }

        return new ModelAndView("redirect:link");
    }

    @RequestMapping(value="/update")
    public ModelAndView update(HttpServletRequest request, ModelMap model)
    {
        String name = request.getParameter("name");
        String email = request.getParameter("email");
        String key = request.getParameter("key");
        try 
        {
        Person p = pm.getObjectById(Person.class, key);
        p.setName(name);
        p.setEmail(email);
        p.setDate(new Date());          
        } 
        catch (Exception e)
        {
        pm.close();
        }
        return new ModelAndView("redirect:link");
    }

    @RequestMapping(value = "/delete/{key}")
    public ModelAndView delete(@PathVariable String key, HttpServletRequest request, ModelMap model) {
        try {

            Person p = pm.getObjectById(Person.class, key);
            pm.deletePersistent(p);

        } finally {

            pm.close();
        }
        return new ModelAndView("redirect:list");
    }
    @SuppressWarnings("unchecked")
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    public String listPerson(ModelMap model) {

        Query q = pm.newQuery(Person.class);
        q.setOrdering("date desc");

        try {
            results = (List<Person>) q.execute();

            if (results.isEmpty()) {
                model.addAttribute("list", null);
            } else {
                model.addAttribute("list", results);
            }

        } finally {
            q.closeAll();
            pm.close();
        }

        return "list";

    }
}

PMF.java:

PMF.java:

package com.web.project;

import javax.jdo.*;

public final class PMF {
    private static final PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory("transactions-optional");
    private PMF(){

    }
    public static PersistenceManagerFactory get()
    {
        return pmfInstance;
    }

}

personal.jsp:

个人.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="com.google.appengine.api.datastore.KeyFactory, java.util.Date, java.util.List;" %>
<%@ page import="com.web.project.Person" %>
<!DOCTYPE html>
<html>
<body>
    <h1>GAE + Spring 3 MVC REST + CRUD Example with JDO</h1>

    Function : <a href="add.jsp">Add Person</a>
    <hr />

    <h2>All Person</h2>
    <table border="1">
        <thead>
            <tr>
                <td>Name</td>
                <td>Email</td>
                <td>Created Date</td>
                <td>Action</td>
            </tr>
        </thead>

        <%

        if(request.getAttribute("list")!=null){

            List<Person> person = (List<Person>) request.getAttribute("list");

            if(!person.isEmpty()){
                 for(Person p : person){

        %>
                <tr>
                  <td><%=p.getName() %></td>
                  <td><%=p.getEmail() %></td>
                  <td><%=p.getDate() %></td>
              <td><a href="update/<%=p.getName()%>">Update</a> | 
                                      <a href="delete/<%=KeyFactory.keyToString(p.getKey()) %>">
                                       Delete</a>
                                  </td>
                </tr>
        <%  

                }

            }

           }
        %> 
    </table>

</body>
</html>

add.jsp:

添加.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<body>
    <h1>Add Person</h1>

    <form method="GET" action="/add">
        <table>
            <tr>
                <td>UserName :</td>
                <td><input type="text" style="width: 185px;" maxlength="30"
                    name="name" id="name" /></td>
            </tr>
            <tr>
                <td>Email :</td>
                <td><input type="text" style="width: 185px;" maxlength="30"
                    name="email" id="email" /></td>
            </tr>
        </table>
        <input type="submit" class="save" title="Save" value="Save" />
    </form>

</body>
</html>

update.jsp:

更新.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<%@ page import="com.web.project.Person" %>
<%@ page import="com.google.appengine.api.datastore.KeyFactory" %>
<html>
<body>
    <h1>Update Customer</h1>

    <%
        Person person = new Person();

        if(request.getAttribute("person")!=null){

            person = (Person)request.getAttribute("person");

        }

    %>

    <form method="post" action="../update" >
        <input type="hidden" name="key" id="key" 
            value="<%=KeyFactory.keyToString(person.getKey()) %>" /> 

        <table>
            <tr>
                <td>
                    UserName :
                </td>
                <td>
                    <input type="text" style="width: 185px;" 
                                             maxlength="30" name="name" id="name" 
                        value="<%=person.getName() %>" />
                </td>
            </tr>
            <tr>
                <td>
                    Email :
                </td>
                <td>
                    <input type="text" style="width: 185px;" 
                                             maxlength="30" name="email" id="email" 
                        value="<%=person.getEmail() %>" />
                </td>
            </tr>
        </table>
        <input type="submit" class="update" title="Update" value="Update" />
    </form>

</body>
</html>

During excution Error:

执行期间错误:

SEVERE: Context initialization failed

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 11 in XML document from ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 29; The prefix "mvc" for element "mvc:annotation-driven" is not bound.
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:398)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:335)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:540)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:643)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:606)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:657)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:525)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:466)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440)
    at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
    at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:255)
    at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:288)
    at com.google.appengine.tools.development.AutomaticInstanceHolder.startUp(AutomaticInstanceHolder.java:26)
    at com.google.appengine.tools.development.AbstractModule.startup(AbstractModule.java:87)
    at com.google.appengine.tools.development.Modules.startup(Modules.java:105)
    at com.google.appengine.tools.development.DevAppServerImpl.doStart(DevAppServerImpl.java:258)
    at com.google.appengine.tools.development.DevAppServerImpl.access
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
0(DevAppServerImpl.java:47) at com.google.appengine.tools.development.DevAppServerImpl.run(DevAppServerImpl.java:213) at com.google.appengine.tools.development.DevAppServerImpl.run(DevAppServerImpl.java:211) at java.security.AccessController.doPrivileged(Native Method) at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:211) at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:277) at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48) at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:219) at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:210) Caused by: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 29; The prefix "mvc" for element "mvc:annotation-driven" is not bound. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:289) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2786) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243) at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347) at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:428) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390) ... 46 more

回答by ssm

please check your context xml. I think you have not defined schema for "mvc".

请检查您的上下文 xml。我认为您还没有为“mvc”定义架构。

eg:

例如:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

回答by Naveen

check wether your project is building or not...also check out that Build Automatically is checked/selected under Project menu or not.

检查您的项目是否正在构建...还要检查是否在“项目”菜单下选中/选择了“自动构建”。

回答by Natasha Kurien

Following is the schema that I use for spring-mvc applications. I faced the same issue because I had missed out on adding the spring-mvc schema.

以下是我用于 spring-mvc 应用程序的架构。我遇到了同样的问题,因为我错过了添加 spring-mvc 模式。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:interceptors>
    </mvc:interceptors>

</beans>

For more information on the schemas to use refer to this link:

有关要使用的模式的更多信息,请参阅此链接:

https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html

https://docs.spring.io/spring/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html

回答by Jeroen

The problem lies in the file called /WEB-INF/mvc-dispatcher-servlet.xml

问题出在名为/WEB-INF/mvc-dispatcher-servlet.xml的文件中

It seems that you have tried to use xml namespaces and you did not define them correctly.

您似乎尝试使用 xml 命名空间,但没有正确定义它们。

Make sure that if you use an element prefixed with mvcthat you have the line with xmlns:mvc="http://www.springframework.org/schema/mvc"in your namespace declaration like in the above example. You wil also need the schemaLocation like in the example below.

确保如果您使用以mvc为前缀的元素,则您的命名空间声明中具有xmlns:mvc="http://www.springframework.org/schema/mvc" 行,如上例所示。您还需要如下例所示的 schemaLocation。

##代码##