專門做任務(wù)的網(wǎng)站嗎怎樣創(chuàng)建網(wǎng)站平臺(tái)
高版本的 lombok 和 tomcat 7 插件沖突問題
在開發(fā)期間,當(dāng)我們使用 tomcat7-maven-plugin 來作為運(yùn)行環(huán)境運(yùn)行我們項(xiàng)目使,如果我們項(xiàng)目中使用了 1.16.20 及以上版本的 lombok 包,項(xiàng)目啟動(dòng)時(shí)會(huì)報(bào)錯(cuò):
for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19
原因在于,從 1.16.20 開始 lombok 包中有了一個(gè)叫 module-info.class 的文件,而低版本的 tomcat 不能識(shí)別這個(gè)文件,從而導(dǎo)致運(yùn)行時(shí)出錯(cuò)。
其實(shí)這個(gè)問題對(duì)于我們而言不是問題,因?yàn)轫?xiàng)目部署時(shí),肯定不會(huì)部署到 tomcat 7 上,至少是 tomcat 8.5 。
對(duì)于這個(gè)問題,解決辦法有 3 個(gè):
-
辦法 1:使用 tomcat8-maven-plugin ,代替 tomcat7 ;
-
辦法 2:使用低版本的 lombok,例如,
1.14.x
的最高版本1.14.8
。 -
辦法 3:將 lombok 的
<scope>
設(shè)置為provided
,這樣,maven 在打包時(shí)就不會(huì)將 lombok 包含在 jar/war 包內(nèi)。我們對(duì) lombok 的使用也就是在編譯時(shí)使用,運(yùn)行時(shí)不需要它。