您好,登錄后才能下訂單哦!
這篇文章給大家介紹Java 11兼容舊項目的注意點有哪些,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
眾所周知,Oracle的Java8已經(jīng)停更,Java11是下一個LTS版本。近期打算對一些舊項目升級到Java11,在這里記下一些需要注意的兼容性問題
javax.xml.bind.JAXBException ClassNotFound問題
JAXB api是java EE的API,在java SE 9中開始便不再包含這個包,在 6/7/8年代都是綁定在一塊的 解決方案就是手工添加jar包。 如果用的是maven,可以添加以下依賴
<!-- Java 6 = JAX-B Version 2.0 --> <!-- Java 7 = JAX-B Version 2.2.3 --> <!-- Java 8 = JAX-B Version 2.2.11 --> <dependencies> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.2.11</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.2.11</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>2.2.11</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> </dependencies>
java.lang.NoClassDefFoundError: javax/xml/ws/EndpointReference異常
問題原因同上邊第1點描述一樣,從java9開始分離了,單獨引入即可
<dependency> <groupId>javax.xml.ws</groupId> <artifactId>jaxws-api</artifactId> <version>2.2.12</version> </dependency>
關(guān)于com.sun.image.codes相關(guān)包的NoClassDefFound異常
這個問題貌似無解,找了很久沒有從maven倉庫找到可以替換的包,當(dāng)然這個好像是因為這是sun公司自己API,如果你用的是openjdk,那么問題迎刃而解。如果不幸你用的是oracle的JDK,那么還是更換相關(guān)類,使用java的imageIO相關(guān)API吧,或者更換相關(guān)依賴的組件。
WebService相關(guān)包的NoClassDefFound異常
引入以下包解決
<dependency> <groupId>javax.xml.ws</groupId> <artifactId>jaxws-api</artifactId> <version>2.2.12</version> </dependency> <dependency> <groupId>javax.jws</groupId> <artifactId>javax.jws-api</artifactId> <version>1.1</version> </dependency>
關(guān)于Java 11兼容舊項目的注意點有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。