溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何解決POI NoClassDefFoundError: org.openxmlformats.schemas.**sheetml.x2006.main.CTWorkbook的錯(cuò)誤問(wèn)題

發(fā)布時(shí)間:2021-10-11 18:17:49 來(lái)源:億速云 閱讀:830 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“如何解決POI  NoClassDefFoundError: org.openxmlformats.schemas.**sheetml.x2006.main.CTWorkbook的錯(cuò)誤問(wèn)題”,在日常操作中,相信很多人在如何解決POI  NoClassDefFoundError: org.openxmlformats.schemas.**sheetml.x2006.main.CTWorkbook的錯(cuò)誤問(wèn)題問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”如何解決POI  NoClassDefFoundError: org.openxmlformats.schemas.**sheetml.x2006.main.CTWorkbook的錯(cuò)誤問(wèn)題”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

問(wèn)題現(xiàn)象

項(xiàng)目中在導(dǎo)入或?qū)С鰰r(shí)都會(huì)報(bào)以下錯(cuò)誤:

java.lang.NoClassDefFoundError: Cloud not initialize class org.openxmlformats.schemas.***sheetml.x2006.main.CTWorkbook

如何解決POI  NoClassDefFoundError: org.openxmlformats.schemas.**sheetml.x2006.main.CTWorkbook的錯(cuò)誤問(wèn)題

在本地測(cè)試沒(méi)有問(wèn)題,在打包到測(cè)試環(huán)境就會(huì)出以上問(wèn)題。

分析

根據(jù)錯(cuò)誤提示了解到NoClassDefFoundError是系統(tǒng)運(yùn)行期,動(dòng)態(tài)加載類時(shí)會(huì)提示該錯(cuò)誤。

跟蹤代碼是在CTWorkbook

	private static SoftReference<SchemaTypeLoader> typeLoader;

	private static synchronized SchemaTypeLoader getTypeLoader() {
		SchemaTypeLoader var0 = typeLoader == null ? null : (SchemaTypeLoader)typeLoader.get();
		if (var0 == null) {
			var0 = XmlBeans.typeLoaderForClassLoader(CTWorkbook.class.getClassLoader());
			typeLoader = new SoftReference(var0);
		}
		return var0;
	}

	public static CTWorkbook newInstance() {
		return (CTWorkbook)getTypeLoader().newInstance(CTWorkbook.type, (XmlOptions)null);
	}

發(fā)現(xiàn)會(huì)調(diào)用org.apache.xmlbeans.SchemaTypeLoader類,根據(jù)類別進(jìn)行實(shí)例化。

在測(cè)試環(huán)境中 (CTWorkbook)getTypeLoader().newInstance(CTWorkbook.type, (XmlOptions)null); 報(bào)錯(cuò)了

使用Arthas 工具在測(cè)試環(huán)境中檢測(cè)getTypeLoader()方法也沒(méi)發(fā)現(xiàn)什么異常。

進(jìn)入Docker容器看了一下加載的lib包,發(fā)現(xiàn)比正常的版本包多出許多重復(fù)的包。

根據(jù)比較與查詢,最后發(fā)現(xiàn)有一個(gè)xbeans與xmlbean包中的實(shí)現(xiàn)類路徑相同導(dǎo)致。

根據(jù)包引用關(guān)系,反查出xfire:xfire-all 這個(gè)包將其他子包也引入到了工程中,在這個(gè)包的引用關(guān)系中也找到了xbeans包的引用。

最后修改導(dǎo)入包,排除org.codehaus.xfire其他包

compile ("org.codehaus.xfire:xfire-all:1.2.6") { exclude group: "org.codehaus.xfire" }

到此,關(guān)于“如何解決POI  NoClassDefFoundError: org.openxmlformats.schemas.**sheetml.x2006.main.CTWorkbook的錯(cuò)誤問(wèn)題”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI