WAS 8.5.5.9 環境下部署包含MyBatis庫文件的項目無法啓動錯誤的解決辦法

之前在公司做了一個項目裏面使用了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的方式修改纔可以。

 

參考:

https://www.ibm.com/support/pages/apar/PK87053

https://www.ibm.com/support/knowledgecenter/SSAW57_9.0.5/com.ibm.websphere.nd.multiplatform.doc/ae/trun_app_reduce_annot.html?cp=SSAW57_8.0.0

https://my.oschina.net/johnlee007/blog/1530967

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章