目前,JDK两个长期版本是8和11,由于大部分项目使用的还是8,所以从8升级到11会遇到一些困难。
本篇文章会基于实践遇到的问题,分类总结可能
1. Java模块化
从Java 9开始,由于引入了JPMS(https://openjdk.java.net/projects/jigsaw/spec/),开始更精细化的包管理和模块复用,导致很多JDK默认加载的包被移除了。
其中我们可能会碰到的例如:
EJB的XML工具JAXB相关的类,假设位于com.x.XMLUtils:
private static void getXmlFromObject(Book book) throws JAXBException {
Marshaller marshallerObj = JAXBContext.newInstance(Book.class).createMarshaller();
marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter sw = new StringWriter();
marshallerObj.marshal(book, sw);
}
sun.misc.BASE64Encoder,假设项目中位于com.x.EncodeUtil:
String encodedString = new BASE64Encoder().encode(inputString.getBytes());
通过JAVA 9 以后自带的工具jdeps,查看解决方法:
jdeps target\APP.jar
com.x.Refle