在本地运行的很好,但是打包成jar包后运行,加载出首页后点击登录,就会报如下错误
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at io.jsonwebtoken.impl.Base64Codec.decode(Base64Codec.java:26)
at io.jsonwebtoken.impl.DefaultJwtBuilder.signWith(DefaultJwtBuilder.java:99)
at com.platform.common.utils.JwtUtils.generateToken(JwtUtils.java:49)
...
这是由于java版本过高,之前java 8及以前的版本是默认包含jaxb-api包的,但是升级后的版本就需要手动来导入这个包了。
所以找到pom.xml文件,然后在里边添加如下代码
<!--解决Handler dispatch failed;nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter-->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
之后再重新打包jar,可以在细节里看到已经配置了缺少的包!
然后再重新上传总的jar包到服务器就可以运行了!