maven NoClassDefFoundError 添加本地包

日常操作
Article Directory
网上的方法都只能在运行测试时生效,打包运行无效

所以在打包运行时跑出错误 NoClassDefFoundError

项目依赖的一个jar包是在开发环境的maven 私有仓库获取的,在部署的环境中没法获取到,所以采取了将jar包放在项目目录下,pom中添加本地依赖的方式

1 通过scope:system引入

  把jar包放在根目录下的lib包中,添加依赖  

1
2
3
4
5
6
7
<dependency>
<groupId>**</groupId>
<artifactId>x</artifactId>
<version>2.2-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/**.x.2.2-SNAPSHOT.jar</systemPath>
</dependency>

使用这种方式不可行,因为 scope:system和scope:system的依赖范围作用相同,即对于编译和测试classpath有效,运行时无效

2 将jar包装载到本地仓库

  命令:    

1
mvn install:install-file -Dfile=/../lib/**.x.2.2-SNAPSHOT.jar -DgroupId=** -DartifactId=x -Dversion=2.2-SNAPSHOT -Dpackaging=jar

  pom依赖

1
2
3
4
5
<dependency>
<groupId>**</groupId>
<artifactId>x</artifactId>
<version>2.2-SNAPSHOT</version>
</dependency>

  这样就可以在编译、测试、运行时都能被加载到
重新打包运行,异常消失。

Author: 哒琳

Permalink: http://blog.jieis.cn/2020/2640eeb1-081c-4f0c-923e-9cd3aad4955c.html

Comments