在用java9使用jwt的时候出现的问题
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at io.jsonwebtoken.impl.Base64Codec.encode(Base64Codec.java:21)
at io.jsonwebtoken.impl.Base64UrlCodec.encode(Base64UrlCodec.java:22)
at io.jsonwebtoken.impl.DefaultJwtBuilder.base64UrlEncode(DefaultJwtBuilder.java:349)
at io.jsonwebtoken.impl.DefaultJwtBuilder.compact(DefaultJwtBuilder.java:295)
at com.tk.riskanalysis.utils.JwtUtils.createToken(JwtUtils.java:32)
at com.tk.riskanalysis.test.main(test.java:19)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 6 more
这里在使用java9然后调用jwt的签名方法的时候抛出的异常,经过多放查证,发现是版本的问题,换成jdk8问题就不复存在了,这是由于使用的是Java EE API,由于JDK9提出的模块化的概念,导致jjava.ee模块不再以后的版本里默认提供但是由于项目中统一用到的是java9,所以只能通过maven进行导入使用了
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>