Maven web项目上传SAE的问题以及解决办法

为上传一个Java Web的项目到SAE上可是费尽心思啊,查了很多资料,也摸索了很久还是没有解决。主要的问题有两个,一个是使用Maven打包的jar包和SAE上提供的jar包冲突了,一个就是jdk的版本问题,SAE上目前只提供1.6和1.7版本的jdk。下面就这两个问题说明一下解决办法。
 
1.Maven的jar包和SAE的jar包冲突

这个问题在查看SAE上的JVM日志的时候会看到类似如下的错误提示:
java.lang.IllegalStateException: class org.springframework.web.filter.CharacterEncodingFilter is not a javax.servlet.Filter
一般出现这个错误提示是因为打包的war包里的servlet-api.jar包和SAE上的servlet-api.jar包冲突了,因此解决办法是在进行打包的时候不要将servlet-api.jar包打包即可。就是为了找这个忽略指定包的问题,找了半天,试过了warSourceExcludes和packagingExcludes,发现都不好使,我也没完全搞明白这两个配置的具体含义,需要进一步探究。
经过摸索和查找资料,发现了真正有效的办法,主要在于pom.xml中引入依赖包时设置scope标签。如下所示:
<dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>servlet-api</artifactId>
         <version>2.5</version>
         <scope>provided</scope>
 </dependency>

 

注意scope标签,compile和runtime两种依赖打包时会打进去,provided、system、test都不会打进去。如果不想打包时将依赖包含进去,可以按实际情况选择后面的方式。
在我的项目中,引入的是 geronimo-servlet_2.5_spec的jar包,这里面就包括了servlet-api的jar包,因此我在打包的时候就忽略该jar包即可。如下所示:
 
<dependency>
         <groupId>org.apache.geronimo.specs</groupId>
         <artifactId>geronimo-servlet_2.5_spec</artifactId>
         <version>1.2</version>
         <scope>provided</scope>
 </dependency>
2.jdk版本问题

目前SAE只支持jdk1.6和1.7,有时你可能使用的是jdk1.8的版本,在进行Maven打包的时候需要设置一下jdk的版本,如果版本不一致会可能会出现如下错误:
Unsupported major.minor version 51.0
需要在pom.xml进行jdk的版本设置,在pom.xml中进行如下配置:
<build>
    <finalName>GMDataVisualization</finalName>
    <plugins>     
          <plugin> 
                <groupId>org.apache.maven.plugins</groupId> 
                <artifactId>maven-war-plugin</artifactId> 
                 <version>2.0.1</version>  
          </plugin>   
          <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-compiler-plugin</artifactId> 
          <configuration> 
               <source>1.7</source> 
               <target>1.7</target> 
          </configuration> 
          </plugin> 
     </plugins> 
</build>
如果创建的SAE项目使用的是jdk1.7,那么在上述配置时就填写1.7版本,如果是1.6则写1.6。

posted on 2015-11-05 11:25  RedstoneCMX  阅读(446)  评论(0编辑  收藏  举报