Maven Web項目出現org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException錯誤


1. 問題描述

  初學Maven,新建了一個基於Web骨架的Web項目,jar 包也導好了,作用域也設置正確了,Tomcat也正常運行了,可是就是說編譯錯誤。

 

2. 問題原因

  雖然我配置了Tomcat 9,但是我忘記了Maven用的是自帶的Tomcat。Maven默認的Tomcat是6.0.29版本,而且問題出在我以前的JDK環境是1.7,因為Tomcat 6 支持JDK1.7,所以沒有錯誤。而我現在更換了JDK1.8,因為Tomcat 6不支持JDK 1.8,編譯錯誤也正常,從報錯信息里也可以看出來。

 

3. 解決方法

  前往Apache的官網找Maven的插件,我們要將Maven的默認Tomcat改成支持JDK1.8的Tomcat插件。

  Maven插件官網:http://maven.apache.org/plugins/

  在 Misc 一欄里找到 Apache Tomcat,點進去。

  Apache提供了四個版本的Tomcat。

  

  每個版本里面都分Tomcat 6 和 Tomcat 7 兩種插件。

  選擇最新的 Version 2.2 中的 Tomcat 7 插件,將代碼寫到項目的 pom.xml 文件下的<build> <plugins> 標簽下。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.2</version>
    </plugin>
  </plugins>
</build>

 

  在運行Maven Goal的時候一定要注意把 tomcat:run 改成 tomcat7:run,否則還是會運行默認的 Tomcat 6。

  

  

  成功啟動 Tomcat 7 ,這下應該沒問題了。

  

 

4. 注意事項

  (1) 更換了 Tomcat 插件以后,最好修改一下當前 Tomcat 的端口,否則可能會和默認的 Tomcat 沖突引發錯誤。

<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
  <configuration>
    <port>8888</port>
  </configuration>
</plugin>

  (2) 經過測試,Tomcat 7 插件 2.1版本(Tomcat/7.0.37)、2.0版本(Tomcat/7.0.30)、2.0-beta-1版本(Tomcat/7.0.25) 都可以兼容JDK1.8。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM