項目環境:spring 3.2.3 / hadoop 2.5 / spring-data-hadoop 1.0.2 ,tomcat7
pom中加入
<dependency>
<groupId>org.springframework.data</groupId><artifactId>spring-data-hadoop</artifactId>
<version>1.0.2.RELEASE</version>
</dependency>
啓動完成後總會拋一個異常:
java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/JspApplicationContext;
在網上查了下,是因爲maven加入hbase時,hbase會引用相應的依賴包,導致版本衝突。
通過maven build 運行 project-info-reports:dependencies 運行完命令會在target/site下有個dependencies.html 文件,查看依賴關係樹。
開始認爲是jasper-compiler-5.5.12.jar和jasper-runtime-5.5.23.jar 兩個包和tomcat衝突的問題
過濾掉hadoop-common中依賴的這兩個包:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.5.0</version>
<exclusions>
<exclusion>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler</artifactId>
</exclusion>
<exclusion>
<groupId>tomcat</groupId>
<artifactId>jasper-runtime</artifactId>
</exclusion>
</exclusions>
</dependency>
發現還是報同樣的異常.
過濾spring-data-hadoop 中依賴的包:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-hadoop</artifactId>
<version>1.0.2.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-streaming</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-tools</artifactId>
</exclusion>
</exclusions>
</dependency>
再啓動就不拋異常了。