您好,登錄后才能下訂單哦!
這篇文章給大家介紹Java 11兼容舊項目的注意點有哪些,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
眾所周知,Oracle的Java8已經停更,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>
關于com.sun.image.codes相關包的NoClassDefFound異常
這個問題貌似無解,找了很久沒有從maven倉庫找到可以替換的包,當然這個好像是因為這是sun公司自己API,如果你用的是openjdk,那么問題迎刃而解。如果不幸你用的是oracle的JDK,那么還是更換相關類,使用java的imageIO相關API吧,或者更換相關依賴的組件。
WebService相關包的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>
關于Java 11兼容舊項目的注意點有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。