java.lang.NoClassDefFoundError:io / jsonwebtoken / Jwts
当我使用mvn spring-boot:run在本地运行时,没有问题。
但是,当我使用mvn clean install将应用程序打包到完全可执行的jar中,然后将jar作为systemd服务运行时,出现了以上错误。
它来自以下行:String user = Jwts.parser()...
一些信息:
发生此问题的此软件包的版本:0.11.1
平台:Ubuntu 18.04
Maven pom.xml中的相关依赖项:
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.1</version>
</dependency>
我也检查了生成的jar文件,依赖项jjwt-impl.0.11.1在这里:
BOOT-INF.lib.jjwt-impl-0.11.1.jar
BOOT-INF.lib.jjwt-api-0.11.1.jar
BOOT-INF.lib.jjwt-jackson-0.11.1.jar
不知道该怎么解决。我认为仅将io.jsonwebtoken添加到maven依赖项即可解决与类路径等相关的所有问题。
我应用spring-boot-maven-plugin包创建jar,并命令mvn clean install创建完全可执行的jar文件。
当我从jar应用程序中打印出类路径时,它仅指向该jar文件本身,而没有其他地方。我不确定那是否应该。我认为所有依赖项都应编译到同一jar中,因此从某种意义上讲,这是有道理的。
还向这里的官方jjwt库发出了一个问题:https://github.com/jwtk/jjwt/issues/599
但这可能是更多与spring-boot相关的问题吗?
最佳答案
通过将maven软件包spring-boot-starter-parent从1.5.2.RELEASE更新到2.3.0.RELEASE版本可以解决此问题