2014-02-22 10 views
34

I unter Ausnahme Frühling 4.0.1 App 6.0.37 in Tomcat bin immer auf den Einsatz:AbstractMethodError auf den Einsatz Frühling 4.0 in Tomcat 6

SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.AbstractMethodError: org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider; 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:700) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4206) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943) 
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778) 
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504) 
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317) 
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Caused by: java.lang.AbstractMethodError: org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider; 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:191) 
    at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:176) 
    at org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.configureParameterNameProviderIfPossible(LocalValidatorFactoryBean.java:276) 
    at org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java:245) 
    at org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean.afterPropertiesSet(OptionalValidatorFactoryBean.java:40) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) 
    ... 36 more 

Nach ähnlichen Abhängigkeiten hinzugefügt werden, in build.gradle:

dependencies { 

providedCompile "javax.servlet:servlet-api:2.5" 
providedCompile "javax.servlet.jsp:jsp-api:2.2" 
providedCompile "javax.el:el-api:2.2" 
compile "javax.servlet.jsp.jstl:jstl-api:1.2" 
compile "org.glassfish.web:jstl-impl:1.2" 

compile "org.slf4j:jcl-over-slf4j:1.7.6" 
compile "org.slf4j:slf4j-api:1.7.6" 

compile ("org.hibernate:hibernate-validator:4.3.1.Final") { 
exclude group: "javax.xml.bind", module: "jaxb-api" 
exclude group: "com.sun.xml.bind", module: "jaxb-impl" 
} 

compile "javax.validation:validation-api:1.1.0.Final" 

// Spring 4.0.1 and other dependencies below 
.... 
} 

Ist der Fehler wegen der Frühjahr-Bohnen und Frühling-Webmvc von der Version EL 2.2.4 abhängig, während Tomcat 6 kommt mit EL 2.1. Wenn ja, wie löst man es? Außerdem habe ich keine Rechte, um Bibliotheken in Tomcat dir zu aktualisieren.

Antwort

72

Der Fehler hat nichts mit der EL zu tun. Es hat alles mit der javax.validation API und Ruhezustand zu tun.

java.lang.AbstractMethodError: org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider 

Ruhe validator 4.3.x ist eine Implementierung des javax.validation 1.0 (JSR-303). Sie enthalten jedoch die 1.1-API-Version. Reduzieren Sie entweder die enthaltene javax.validation-Version oder aktualisieren Sie Ihren Hibernate-Validator auf 5.0.x.

+1

Ich sehe diesen Fehler sind. Aber laut der Dokumentation von Spring 4.0.3 soll es mit Hibernate Validator 4.3.1 funktionieren. Ich habe versucht, auf Validation 1.0.0GA herunterzustufen und sah immer noch den Fehler. http://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/html/validation.html – haskovec

+1

Ziemlich spät zum Spiel, aber das funktionierte für mich ... mit Spring 4.0. 9, Hibernate Validator 4.3.1 und javax.validation 1.0.0 – Bane

+1

Ich möchte Deinum einen kurzen Applaus geben. tnx –

1

überprüfen, um zu sehen, ob es auch mehrere Verweise auf Validator in Ihrer pom Datei

<?xml version="1.0" encoding="UTF-8"?> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-validator</artifactId> 
    <version>${hibernate-val.version}</version> 
</dependency>