2014-09-25 100 views
0

我將在Intellij IDEA中創建的項目遷移到maven。現在,當我嘗試將項目部署到Tomcat時,我收到併發生錯誤「java.lang.NoSuchFieldError:NULL」。導致:java.lang.NoSuchFieldError:將應用程序部署到Tomcat時爲NULL

這是pom.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<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.azcomp.payments</groupId> 
<artifactId>PaymentGateway</artifactId> 
<packaging>war</packaging> 
<version>1.0</version> 

<name>PaymentGateway</name> 
<properties> 
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <springVersion>3.2.4.RELEASE</springVersion> 
    <cxf.version>2.6.1</cxf.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjtools</artifactId> 
     <version>1.6.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.7.7</version> 
    </dependency> 
    <dependency> 
     <groupId>org.mybatis</groupId> 
     <artifactId>mybatis</artifactId> 
     <version>3.1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 
    <dependency> 
     <groupId>org.codehaus.jettison</groupId> 
     <artifactId>jettison</artifactId> 
     <version>1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>xpp3</groupId> 
     <artifactId>xpp3_min</artifactId> 
     <version>1.1.4c</version> 
    </dependency> 
    <dependency> 
     <groupId>com.thoughtworks.xstream</groupId> 
     <artifactId>xstream</artifactId> 
     <version>1.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.0</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-bindings-soap</artifactId> 
     <version>2.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-ws-security</artifactId> 
     <version>2.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-api</artifactId> 
     <version>2.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-bundle</artifactId> 
     <version>${cxf.version}</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-asm</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-rt-transports-http</artifactId> 
     <version>${cxf.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.10.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
     <version>3.9</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sf.supercsv</groupId> 
     <artifactId>super-csv</artifactId> 
     <version>2.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>${springVersion}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${springVersion}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${springVersion}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>${springVersion}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${springVersion}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${springVersion}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>${springVersion}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>${springVersion}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>tomcat-jdbc</artifactId> 
     <version>7.0.55</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.mybatis</groupId> 
     <artifactId>mybatis-spring</artifactId> 
     <version>1.1.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.azcomp</groupId> 
     <artifactId>apm_util</artifactId> 
     <version>1.0</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.azcomp</groupId> 
     <artifactId>apm_data</artifactId> 
     <version>1.0</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.azcomp</groupId> 
     <artifactId>ias2_util</artifactId> 
     <version>1</version> 
    </dependency> 
    <dependency> 
     <groupId>net.sf.jasperreports</groupId> 
     <artifactId>jasperreports</artifactId> 
     <version>5.2.0</version> 
    </dependency> 
</dependencies> 

<build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
       <compilerArguments> 
        <endorseddirs>${endorsed.dir}</endorseddirs> 
       </compilerArguments> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${endorsed.dir}</outputDirectory> 
         <silent>true</silent> 
         <artifactItems> 
          <artifactItem> 
           <groupId>javax</groupId> 
           <artifactId>javaee-endorsed-api</artifactId> 
           <version>7.0</version> 
           <type>jar</type> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <failOnMissingWebXml>true</failOnMissingWebXml> 
       <warSourceDirectory>web</warSourceDirectory> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

這是applicationContext.xml中:

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jaxws="http://cxf.apache.org/jaxws" 
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd 

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd"> 

<!--General configuration ###################################################################################### --> 
<bean id="uniqueId" class="java.util.UUID" factory-method="randomUUID"/> 

<bean id="cacheFlushInfo" class="com.azcomp.paymentgateway.domain.CacheFlushInfo"/> 

<!--enable component scanning (beware that this does not enable mapper scanning!) --> 
<context:component-scan base-package="com.azcomp.paymentgateway.service"/> 

<context:property-placeholder properties-ref="config" /> 

<!-- enable autowire --> 
<context:annotation-config/> 
<!--############################################################################################################ --> 

<!--AOP Configuration ########################################################################################## --> 
<aop:aspectj-autoproxy/> 

<!-- Aspect --> 
<bean id="aopLogger" class="com.azcomp.paymentgateway.aspects.AopLogger" /> 
<!--############################################################################################################ --> 

<!--CXF Configuration ########################################################################################## --> 
<import resource="classpath:META-INF/cxf/cxf.xml"/> 
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/> 

<bean id="securityInterceptor" class="com.azcomp.paymentgateway.interceptors.BasicAuthenticationInterceptor"/> 

<bean class="com.azcomp.paymentgateway.webservice.PaymentGatewayWebServiceImpl" id="paymentGatewayWebService"/> 

<jaxws:endpoint id="webService" implementor="#paymentGatewayWebService" address="/WebService"> 
    <jaxws:inInterceptors> 
     <ref bean="securityInterceptor"/> 
    </jaxws:inInterceptors> 
    <jaxws:properties> 
     <entry key="mtom-enabled" value="true"/> 
    </jaxws:properties> 
</jaxws:endpoint> 
<!--############################################################################################################ --> 

<!--Database configuration ##################################################################################### --> 
<bean id="transactionManagerAzis" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource" ref="dataSourceAzis"/> 
</bean> 

<bean id="transactionManagerBscs" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource" ref="dataSourceBscs"/> 
</bean> 

<!-- enable transaction demarcation with annotations --> 
<tx:annotation-driven transaction-manager="transactionManagerAzis"/> 

<tx:annotation-driven transaction-manager="transactionManagerBscs"/> 

<!-- define the SqlSessionFactory --> 
<bean id="sqlSessionFactoryAzis" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="dataSource" ref="dataSourceAzis"/> 
    <property name="typeAliasesPackage" value="com.azcomp.paymentgateway.domain"/> 
</bean> 

<bean id="sqlSessionFactoryBscs" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="dataSource" ref="dataSourceBscs"/> 
    <property name="typeAliasesPackage" value="com.azcomp.paymentgateway.domain"/> 
</bean> 

<!-- scan for mappers and let them be autowired --> 
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
    <property name="basePackage" value="com.azcomp.paymentgateway.dao"/> 
    <property name="annotationClass" value="com.azcomp.paymentgateway.repositories.AzisRepository"/> 
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryAzis"/> 
</bean> 

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
    <property name="basePackage" value="com.azcomp.paymentgateway.dao"/> 
    <property name="annotationClass" value="com.azcomp.paymentgateway.repositories.BscsRepository"/> 
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBscs"/> 
</bean> 

<beans profile="dev"> 
    <jee:jndi-lookup id="dataSourceAzis" jndi-name="java:comp/env/jdbc/ApsuserAtAzistst" resource-ref="true" /> 
    <jee:jndi-lookup id="dataSourceBscs" jndi-name="java:comp/env/jdbc/ApsuserAtBscstest" resource-ref="true" /> 

    <bean id="config" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
     <property name="location" value="file:${catalina.home}/conf/PaymentGateway/applicationConfig-dev.properties"/> 
    </bean> 
</beans> 

<beans profile="test,default"> 
    <jee:jndi-lookup id="dataSourceAzis" jndi-name="java:comp/env/jdbc/ApsuserAtAzistst" resource-ref="true" /> 
    <jee:jndi-lookup id="dataSourceBscs" jndi-name="java:comp/env/jdbc/ApsuserAtBscstest" resource-ref="true" /> 

    <bean id="config" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
     <property name="location" value="file:${catalina.home}/conf/PaymentGateway/applicationConfig-test.properties"/> 
    </bean> 
</beans> 

<beans profile="production"> 
    <jee:jndi-lookup id="dataSourceAzis" jndi-name="java:comp/env/jdbc/ApsuserAtAzis" resource-ref="true" /> 
    <jee:jndi-lookup id="dataSourceBscs" jndi-name="java:comp/env/jdbc/ApsuserAtBscs" resource-ref="true" /> 

    <bean id="config" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
     <property name="location" value="file:${catalina.home}/conf/PaymentGateway/applicationConfig-production.properties"/> 
    </bean> 
</beans> 

<!--############################################################################################################ --> 

這是例外:

Sep 25, 2014 6:21:56 PM org.apache.catalina.core.ApplicationContext log 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.NoSuchFieldError: NULL 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:441) 
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:626) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291) 
    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:633) 
    at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1553) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source) 
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:622) 
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:569) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301) 
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source) 
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source) 
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(Unknown Source) 
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(Unknown Source) 
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(Unknown Source) 
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(Unknown Source) 
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) 
    at sun.rmi.transport.Transport$1.run(Unknown Source) 
    at sun.rmi.transport.Transport$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Unknown Source) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.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.NoSuchFieldError: NULL 
    at org.springframework.expression.TypedValue.<clinit>(TypedValue.java:32) 
    at org.springframework.expression.spel.support.StandardEvaluationContext.setRootObject(StandardEvaluationContext.java:88) 
    at org.springframework.expression.spel.support.StandardEvaluationContext.<init>(StandardEvaluationContext.java:74) 
    at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:124) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1315) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.evaluate(BeanDefinitionValueResolver.java:214) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:186) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1419) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1160) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    ... 54 more 

請幫忙解決這個問題。

+0

你如何運行你的tomcat?使用maven還是你有一個獨立的實例?我建議查看應用程序的類路徑,看起來像一個依賴性問題。 – Claudio 2014-09-25 13:50:40

+2

[嘗試部署到tomcat時,可​​能導致:java.lang.NoSuchFieldError:NULL](http://stackoverflow.com/questions/18967376/when-trying-to-deploy-to-tomcat-caused-通過Java的琅nosuchfielderror空) – 2014-09-25 14:01:25

回答

1

也許,錯誤是由Spring框架的不匹配版本產生的,我注意到你需要在同一個項目中使用spring-core,spring-transaction等。

所以現在,我建議你確保不同的春天版本的兼容性。

相關問題