2015-02-04 2 views
0

I'am использованием Spring MVC (версия 4.1.1.RELEASE) для моего веб-приложение, которое использует службы, разработанные в другом модуле Maven с использованием Spring (версия 2.0.4)Parssing web.xml бросает NoSuchMethodError

родитель pom.xml:

<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.bdoci.bdocinteractive.tablet</groupId> 
<artifactId>bdoci-tablet</artifactId> 
<packaging>pom</packaging> 
<version>1.0</version> 


<modules> 
    <module>bdoci-tablet-web</module> 
    <module>bdoci-services</module> 
</modules> 

Услуги модуль pom.xml

<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/maven-v4_0_0.xsd"> 
<organization> 
    <name>Business Document</name> 
</organization> 

<parent> 
    <artifactId>bdoci-tablet</artifactId> 
    <groupId>com.bdoci.bdocinteractive.tablet</groupId> 
    <version>1.0</version> 
</parent> 


<groupId>com.bdoc.bdocinteractive</groupId> 
<artifactId>bdoci-services</artifactId> 
<modelVersion>4.0.0</modelVersion> 
<version>${parent.version}</version> 

<dependencies> 
    <dependency> 
     <groupId>com.bdoc</groupId> 
     <artifactId>bdocwebinteractive</artifactId> 
     <version>5.3-SNAPSHOT</version> 
    </dependency> 

    <dependency> 
     <groupId>taglibs</groupId> 
     <artifactId>standard</artifactId> 
     <version>1.1.2</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.1.2</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.acegisecurity</groupId> 
     <artifactId>acegi-security</artifactId> 
     <version>1.0.6</version> 
    </dependency> 
    <dependency> 
     <groupId>axis</groupId> 
     <artifactId>axis</artifactId> 
     <version>1.4</version> 
    </dependency> 
    <dependency> 
     <groupId>backport-util-concurrent</groupId> 
     <artifactId>backport-util-concurrent</artifactId> 
     <version>3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate</artifactId> 
     <version>3.2.5.ga</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-annotations</artifactId> 
     <version>3.3.0.ga</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>3.0.0.ga</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jdom</groupId> 
     <artifactId>jdom2</artifactId> 
     <version>2.0.5</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jsoup</groupId> 
     <artifactId>jsoup</artifactId> 
     <version>1.7.2</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sourceforge.htmlcleaner</groupId> 
     <artifactId>htmlcleaner</artifactId> 
     <version>2.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring</artifactId> 
     <version>2.0.4</version> 
    </dependency> 
    <dependency> 
     <groupId>opensymphony</groupId> 
     <artifactId>xwork</artifactId> 
     <version>2.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>opensymphony</groupId> 
     <artifactId>propertyset</artifactId> 
     <version>1.3</version> 
    </dependency> 
    <dependency> 
     <groupId>commons-io</groupId> 
     <artifactId>commons-io</artifactId> 
     <version>1.4</version> 
    </dependency> 
    <dependency> 
     <groupId>javassist</groupId> 
     <artifactId>javassist</artifactId> 
     <version>3.12.1.GA</version> 
    </dependency> 
    <dependency> 
     <groupId>org.opensymphony.quartz</groupId> 
     <artifactId>quartz</artifactId> 
     <version>1.6.1</version> 
    </dependency> 

    <dependency> 
     <groupId>com.itextpdf</groupId> 
     <artifactId>itextpdf</artifactId> 
     <version>5.0.2</version> 
    </dependency> 
    <dependency> 
     <groupId>c3p0</groupId> 
     <artifactId>c3p0</artifactId> 
     <version>0.9.1</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.6</version> 
    </dependency> 

    <dependency> 
     <groupId>org.samba.jcifs</groupId> 
     <artifactId>jcifs</artifactId> 
     <version>1.2.6</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.james</groupId> 
     <artifactId>apache-mime4j</artifactId> 
     <version>0.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>opensymphony</groupId> 
     <artifactId>oscore</artifactId> 
     <version>2.2.6</version> 
    </dependency> 
    <dependency> 
     <groupId>opensymphony</groupId> 
     <artifactId>osworkflow</artifactId> 
     <version>2.8.0</version> 
    </dependency> 

    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.13</version> 
    </dependency> 

    <dependency> 
     <groupId>net.sf.ehcache</groupId> 
     <artifactId>ehcache</artifactId> 
     <version>1.5.0</version> 
    </dependency> 

</dependencies> 
<repositories> 

    <repository> 
     <id>bdocWebDavRepository</id> 
     <name>Bdoc WebDav Maven 2 repository</name> 
     <url>https://bdocument.drive.cloudforge.com/projects/BdocDesign2008/m2/repository</url> 
    </repository> 
    <repository> 
     <id>XWiki</id> 
     <name>XWiki Maven 2 repository</name> 
     <url>http://maven.xwiki.org/externals</url> 
    </repository> 
    <repository> 
     <id>JBOSS</id> 
     <name>JBoss Repository</name> 
     <url>http://repository.jboss.org/maven2</url> 
    </repository> 
    <repository> 
     <id>Atlassian</id> 
     <name>Atlassian Repository</name> 
     <url>https://maven.atlassian.com/repository/public</url> 
    </repository> 
    <repository> 
     <id>Maven Central</id> 
     <name>Maven Central Repository</name> 
     <url>http://repo2.maven.org/maven2</url> 
    </repository> 
    <repository> 
     <id>Java.net</id> 
     <name>Java .net Repository</name> 
     <url>http://download.java.net/maven/2</url> 
    </repository> 
    <repository> 
     <id>itextpdf.com</id> 
     <name>Maven Repository for iText</name> 
     <url>http://maven.itextpdf.com/</url> 
    </repository> 
</repositories> 

<distributionManagement> 
    <repository> 
     <uniqueVersion>false</uniqueVersion> 
     <id>bdocWebDavRepository</id> 
     <name>Bdoc WebDav Maven 2 repository</name> 
     <url>https://bdocument.drive.cloudforge.com/projects/BdocDesign2008/m2/repository 
     </url> 
    </repository> 
</distributionManagement> 

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.5</source> 
        <target>1.5</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-javadoc-plugin</artifactId> 
       <version>2.7</version> 
       <configuration> 
        <excludePackageNames>org.apache.*</excludePackageNames> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

веб-приложений модуль pom.xml

<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> 

<artifactId>bdoci-tablet-web</artifactId> 
<version>1.0</version> 
<packaging>war</packaging> 

<parent> 
    <groupId>com.bdoci.bdocinteractive.tablet</groupId> 
    <artifactId>bdoci-tablet</artifactId> 
    <version>1.0</version> 
</parent> 

<properties> 
    <spring.version>4.1.1.RELEASE</spring.version> 
    <jackson.version>2.4.4</jackson.version> 
</properties> 

<dependencies> 

    <dependency> 
     <groupId>com.bdoc.bdocinteractive</groupId> 
     <artifactId>bdoci-services</artifactId> 
     <version>1.0</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <!--Dependency Jackson --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.codehaus.jackson</groupId> 
     <artifactId>jackson-mapper-asl</artifactId> 
     <version>1.9.13</version> 
    </dependency> 

</dependencies> 

web.xml

<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

<display-name>Bdoci Tablet</display-name> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:/com/bdoc/bdocinteractive/config/applicationContext*.xml</param-value> 
</context-param> 

<servlet> 
    <servlet-name>bdoci-tablet-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>bdoci-tablet-dispatcher</servlet-name> 
    <url-pattern>/tablet/*</url-pattern> 
</servlet-mapping> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

и грузоотправитель Servlet конфигурации:

<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" 
    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-4.0.xsd"> 

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

<mvc:annotation-driven/> 

При запуске Tomcat я получаю следующую трассировку стека

Caused by: java.lang.NoSuchMethodError: org.springframework.beans.factory.xml.XmlReaderContext.getEnvironment()Lorg/springframework/core/env/Environment; 
at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:81) 
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:69) 
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1114) 
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1104) 
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:133) 
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:90) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:458) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:353) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303) 
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:280) 
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:131) 
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:147) 
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124) 
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:92) 
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:100) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313) 
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:329) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:265) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:235) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:126) 
at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284) 
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197) 
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087) 
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5229) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5516) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649) 
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1763) 
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 org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) 
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618) 
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565) 
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 org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) 
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487) 
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97) 
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328) 
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420) 
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848) 
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 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322) 
at sun.rmi.transport.Transport$1.run(Transport.java:177) 
at sun.rmi.transport.Transport$1.run(Transport.java:174) 
at java.security.AccessController.doPrivileged(Native Method) 
at sun.rmi.transport.Transport.serviceCall(Transport.java:173) 
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556) 
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811) 
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 

i'am не уверен, что если проблема в пружинной Сопутствующей другую версию. Если это так, как я могу решить эту проблему?

PS: Я не могу изменить Spring Version в сервисе Module.

+0

Как вы уже сказали, не используйте пружинные варианты. Явно определите части версии и структуры, которые вы хотите использовать в своем pom.xml (и, возможно, исключаете зависимость от пружины сервисной части). Однако будьте осторожны, что вы можете столкнуться с проблемами, поскольку 2.0 довольно старый ... –

+0

, пожалуйста, разместите свою структуру проекта и соответствующий путь classpath/buildpath. –

ответ

0

Если вы не можете изменить версию служебного модуля Spring, вам либо придется использовать эту версию для всего приложения, либо изолировать сервисный модуль.

Одним из способов достижения изолированности было бы создание выделенного webapp для сервисного модуля с удаленным вызываемым API; то ваш клиент webapp может использовать этот API для взаимодействия с сервисным модулем.

Каждый webapp имеет свой собственный путь к классам, поэтому у них могут быть разные версии Spring.

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