之前在公司做了一個項目裏面使用了MyBatis,在本地運行的挺正常的,結果部署到WAS服務器之後啓動不了,看了一下服務器日誌,項目裏面jar包的類和服務器自帶的jar包的類衝突了,有同樣類名存在,而且版本不一致。諮詢了IBM的技術支持,得到了解決辦法,在war包裏面的MANIFEST.MF文件中增加下面兩行內容,在服務器啓動的時候忽略有衝突的類的掃描:
Ignore-Scanning-Archives: WEB-INF/lib/mybatis-3.4.0.jar
Ignore-Scanning-Packages: org.apache.ibatis.javassist
自己手工修改war包裏面的MANIFEST.MF文件內容後,再部署啓動,問題解決。因爲項目是使用Maven進行構建打包的,如果每次打包完成後都要手工修改MANIFEST.MF文件還是很麻煩的,經過查詢Maven相關資料得到解決辦法,可以在pom.xml文件中指定打包時要寫入MANIFEST.MF文件的屬性,看下面的代碼片段:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
<version>3.0</version>
<failOnMissingWebXml>false</failOnMissingWebXml>
<warSourceExcludes>html/**</warSourceExcludes>
<webResources>
<resource>
<directory>src/main/webapp/WEB-INF</directory>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
</resource>
</webResources>
<archive>
<!-- 解決部署到WAS 8.5.5.9 啓動應用報錯的問題 -->
<manifestEntries>
<Ignore-Scanning-Archives>WEB-INF/lib/mybatis-3.4.0.jar</Ignore-Scanning-Archives>
<Ignore-Scanning-Packages>org.apache.ibatis.javassist</Ignore-Scanning-Packages>
</manifestEntries>
</archive>
</configuration>
</plugin>
修改pom.xml文件後再執行打包,生成的MANIFEST.MF文件中已經增加了兩項屬性信息,問題得到完美解決!
注意:不要在控制檯直接修改,不會生效,務必通過pom的方式修改纔可以。
參考: