2013-09-26 5 views
0

Я создал форму входа в веб-приложение, используя весеннюю безопасность. Но я сталкиваюсь с ошибками при запуске. Пожалуйста, помогите мне. Я новичок в пружинах.Ошибка: Ошибка инициализации контекста при запуске сервера

журнал ошибок:

Context initialization failed 
java.lang.NoClassDefFoundError: org/springframework/dao/DataAccessException 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
at java.lang.Class.getDeclaredMethods(Unknown Source) 
at org.springframework.core.type.StandardAnnotationMetadata.hasAnnotatedMethods(StandardAnnotationMetadata.java:136) 
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.checkConfigurationClassCandidate(ConfigurationClassBeanDefinitionReader.java:318) 
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:172) 
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:142) 
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:599) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:407) 
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.springframework.dao.DataAccessException 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
... 22 more 

Sep 27, 2013 3:12:35 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
java.lang.NoClassDefFoundError: org/springframework/dao/DataAccessException 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
at java.lang.Class.getDeclaredMethods(Unknown Source) 
at org.springframework.core.type.StandardAnnotationMetadata.hasAnnotatedMethods(StandardAnnotationMetadata.java:136) 
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.checkConfigurationClassCandidate(ConfigurationClassBeanDefinitionReader.java:318) 
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:172) 
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:142) 
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:599) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:407) 
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: org.springframework.dao.DataAccessException 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
... 22 more 

Кроме того, мой web.xml является:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
     version="2.4"> 
     <display-name>SpringSecurityDemo</display-name> 
     <description>SpringSecurityDemo</description> 

     <servlet> 
        <servlet-name>dispatcher</servlet-name> 
        <servlet-class>org.springframework.web.servlet.DispatcherServlet 
        </servlet-class> 
        <load-on-startup>1</load-on-startup> 
     </servlet> 
     <servlet-mapping> 
        <servlet-name>dispatcher</servlet-name> 
        <url-pattern>*.do</url-pattern> 
     </servlet-mapping> 
     <listener> 
        <listener-class>org.springframework.web.context.ContextLoaderListener 
        </listener-class> 
     </listener> 

     <context-param> 
           <param-name>contextConfigLocation</param-name> 
           <param-value> 
           /WEB-INF/dispatcher-servlet.xml, 
           /WEB-INF/spring-security.xml 
           </param-value> 
     </context-param> 

     <!-- Spring Security --> 
     <filter> 
        <filter-name>springSecurityFilterChain</filter-name> 
        <filter-class> 
       org.springframework.web.filter.DelegatingFilterProxy 
      </filter-class> 
     </filter> 
     <filter-mapping> 
        <filter-name>springSecurityFilterChain</filter-name> 
        <url-pattern>/*</url-pattern> 
     </filter-mapping> 

</web-app> 

грузоотправитель-servlet.xml является

<?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-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

     <context:annotation-config /> 

     <context:component-scan base-package="com.pkg.controller" /> 

     <bean 
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
        <property name="prefix"> 
           <value>/WEB-INF/pages/</value> 
        </property> 
        <property name="suffix"> 
           <value>.jsp</value> 
        </property> 
     </bean> 

     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
        <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
        <property name="url" value="jdbc:mysql://localhost:3306/logindb" /> 
        <property name="username" value="root" /> 
        <property name="password" value="admin" /> 
     </bean> 

</beans>   

весна-security.xml является:

<beans:beans xmlns="http://www.springframework.org/schema/security" 
xmlns:beans="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-3.0.xsd 
     http://www.springframework.org/schema/security 
     http://www.springframework.org/schema/security/spring-security-3.0.3.xsd"> 
     <http auto-config="true"> 
        <intercept-url pattern="/loginForm.jsp" filters="none"/> 
        <intercept-url pattern="/**" access="ROLE_USER" /> 
        <form-login login-page="/loginForm.jsp" default-target-url="/login.do" 
always-use-default-target="true" 
           authentication-failure-url="/loginForm.jsp?login_error=1" /> 
        <logout logout-success-url="/loginForm.jsp" /> 
     </http> 
     <authentication-manager> 
        <authentication-provider> 
           <jdbc-user-service data-source-ref="dataSource" 
         users-by-username-query=" 
          select username,password, enabled 
          from users where username=?" 
         authorities-by-username-query=" 
          select u.username, ur.authority from users u, user_roles ur 
          where u.user_id = ur.user_id and u.username=?" 
         /> 
        </authentication-provider> 
     </authentication-manager> 
</beans:beans> 

проект уже нижеуказанным банки в WEB_INF/Lib папки:

commons.logging-1.1.1.jar 
hibernate-validator-4.0.2.GA.jar 
javax.validation-1.0.0.GA.jar 
jstl-1.2.jar 
mysql-connector-java-5.1.9.jar 
org.springframework.aop-sources-3.0.5.RELEASE.jar 
org.springframework.web.servlet-3.0.1.RELEASE-A.jar 
spring-asm-3.0.3.RELEASE.jar 
spring-aspects-3.0.5.RELEASE.jar 
spring-beans-3.0.3.RELEASE.jar 
spring-context-3.0.3.RELEASE.jar 
spring-core-3.0.5.RELEASE.jar 
spring-expression-3.0.3.RELEASE.jar 
spring-jdbc-3.0.5.RELEASE.jar 
spring-security-acl-3.0.5.RELEASE-sources.jar 
spring-security-config-3.0.5.RELEASE.jar 
spring-security-core-3.0.5.RELEASE.jar 
spring-security-taglibs-3.0.5.RELEASE.jar 
spring-security-web-3.0.5.RELEASE.jar 
spring-tx-3.0.5.RELEASE.jar 
spring-web-3.0.5.RELEASE.jar 
spring-webmvc-3.0.5.RELEASE.jar 

loginForm.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<html> 
<head> 
<title>spring security database login demo</title> 
</head> 
<body> 
<table> 
    <tr> 
     <td valign="top"><c:if test="${not empty param.login_error}"> 
       <font color="red"> Invalid user name or password, try again.<br /> 
        <br /> 
       </font> 
      </c:if> 
      <form name="login_form" 
       action="<c:url value='j_spring_security_check'/>" method="POST"> 
       <div> 
        <table width="40%" border="0" cellpadding="0" cellspacing="0"> 
         <tr> 
          <td valign="top"> 
           <table border="0" cellspacing="0" cellpadding="4" width="40%"> 
            <tr> 
             <td colspan="2">Login 
              <hr width="100%" size="1" noshade align="left"> 
             </td> 
             <td></td> 
            </tr> 
            <tr> 
             <td width="80">Username</td> 
             <td valign="top" align="left"><input type='text' 
              id='username' size="30" maxlength="40" name='j_username' 
              value='<c:if test="${not empty param.login_error}"> 
               <c:out value="${SPRING_SECURITY_LAST_USERNAME}"/> </c:if>' /> 
             </td> 
            </tr> 
            <tr> 
             <td width="80">Password</td> 
             <td valign="top" align="left"><input type='password' 
              name='j_password' size="30" maxlength="30"></td> 
            </tr> 
            <tr> 
             <td></td> 
             <td><input type="submit" value="Submit" /></td> 
            </tr> 
           </table> 
          </td> 
         </tr> 
        </table> 
       </div> 
      </form></td> 
    </tr> 
</table> 
</body> 
</html> 

Выше я разместил мой dispacter сервлет, а также пружинной безопасности и web.xml Пожалуйста, дайте я знаю, где я совершал ошибку

+0

Можете ли вы проверить, что в вашей войне на самом деле присутствуют весенние баночки? – Sikorski

+0

@Sikorski: да, у него есть файл org.springframework.aop-sources-3.0.5.RELEASE.jar в папке WEB-INF/lib. –

+0

проект имеет ниже упомянутый банку в папке WEB_INF/lib: commons.logging-1.1.1 .jar Hibernate-валидатор-4.0.2.GA.jar javax.validation-1.0.0.GA.jar JSTL-1.2.jar MySQL-разъем-Java-5.1.9.jar org.springframework.aop -sources-3.0.5.RELEASE.jar org.springframework.web.servlet-3.0.1.RELEASE-A.jar spring-asm-3.0.3.RELEASE.jar spring-aspect-3.0.5.RELEASE .jar spring-beans-3.0.3.RELEASE.jar spring-context-3.0.3.RELEASE.jar spring-core-3.0.5.RELEASE.jar spring-expression-3.0.3.RELEASE.jar spring-jdbc-3.0.5.RELEASE.jar spring-security-acl-3.0.5.RELEASE-sources.jar spring-security-config-3.0.5 .RELEASE.jar –

ответ

2

Когда вы получите сообщение об ошибке, как это:

java.lang.NoClassDefFoundError: org/springframework/aop/config/AbstractInterceptorDrivenBeanDefinitionDecorator 

это означает, что в вашем пути к классу отсутствует что-то, в данном случае файл jar с именем вроде spring-aop-[version].jar.

Кроме того, похоже, что ваши файлы xml используют разные версии spring-beans.xsd. Вы должны перейти на самую новую версию.

+0

какую версию я должен использовать? –

+0

Вероятно, '3.2.4.RELEASE', который является самым новым. См. Здесь: http://projects.spring.io/spring-framework/. Вы также должны получить правильные версии своих зависимостей, используя Maven или Gradle. – david

+0

Я импортировал правильную версию aop..but все еще не работает .. –

Смежные вопросы