— 遇到问题
昨天在用Maven打包时,发现一个错误,报错信息如下图所示:
— 找到问题根源
这个问题由于是第一次遇到,我网上找了很多办法,都没有解决,主要是问题的根源没有找到,最后经过我的一番不懈探索!!我终于发现了问题的根源(其实仔细看报错信息,你发现其实问题描述的很清除了,就是程序引用的包找不到,而这些所有错误基本都是指向了自己引进的jar包):原因就在于我引入了外部(非maven导入的)jar包,如下图所示。

由于maven项目打包的时候默认是不会把外部jar包打到项目中去的,所有如果直接在maven里面打包,就会报程序包找不到的错误等等。
— 解决问题
问题的根源找到了,问题就很好解决了。这里给出两种解决办法
方式1
直接在 pom.xml 里面加入下面代码(因为我的jar包都是放在/src/main/resources/lib下面,所有我这里的路径就是这样):
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<extdirs>${project.basedir}/src/main/resources/lib</extdirs>
</compilerArguments>
</configuration>
</plugin>
我加了之后再打包是没有问题的,但是我部署的时候又出现了问题,所以我又找到了另外一种解决办法。
方式2
第一步:其中 groupId 和 artifactId 可以随便填,注意 artifactId 不要重复了,version 版本号jar包是什么版本就是什么版本,否则可以随便填。
<!--引入外部jar包-->
<dependency>
<groupId>com.1</groupId>
<artifactId>out-jar-1</artifactId>
<version>1.45</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/bcprov-jdk16-1.45.jar</systemPath>
</dependency>
<dependency>
<groupId>com.2</groupId>
<artifactId>out-jar-2</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/commons-codec-1.6.jar</systemPath>
</dependency>
第二步:如果是SpringBoot项目还要加如下配置:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
具体在我的项目中是这样(主要是看路径):

以上步骤做完之后,再部署的时候,就完全没有问题了。