在做项目的时候,有时需要引入第三方Jar包来完成指定的功能。但是会出现,引入jar包后,在编辑器上可以正常访问,但是打包成war后就会报class not found的异常。
本篇所有操作都基于idea
一、引入jar包1、在resources文件夹中创建一个lib文件夹,并复制Jar包。
2、点击File->Project Structure->Libraries
然后选择所在的lib文件夹,点击OK。
1、引入jar包
com.pdd pdd-sdk-1 1.11.68 system ${pom.basedir}/src/main/resources/lib/pop-sdk-1.11.68-all-sources.jar
${pom.basedir}为maven的路径,也可用${project.basedir},但是我用这个的时候地址还是会错误。
groupId、artifactId、version 这三个可以随便写,想写啥都可以。重要的是scope、systemPath这两个要确保不出错。
scope就是system,systemPath为jar包所在路径。
到此,在idea中就可以正常的使用Jar包了,但是打包成war就会报class not found的异常这是因为打包后,没有把jar包一起打包。
2、配置打包War(重点!)
1️⃣SpringBoot想要打包成war包部署的话,需要把SpringBoot自带的tomcat给干掉。
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat
网上查资料时,发现有很多人说还需要加上以下代码,但是我加上后反而不好使,所以我没有加。
javax.servlet javax.servlet-api provided
2️⃣修改自启动类,重写初始化代码
用过springboot都知道每个项目都有一个Application的启动类
我们需要把类似于web.xml的配置方式在application中启动spring的上下文,在启动类中继承SpringBootServletInitializer重写configure方法即可,其代码如下:
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(AllianceApplication.class);
}
3、打包war后一起打包jar(超重点!!)
把pom默认的Jar打包插件改为War打包插件,如果没有引入外部Jar则不需要修改,使用原来的插件即可
三、打包warorg.apache.maven.plugins maven-war-plugin src/main/resources/lib WEB-INF/lib **/*.jar
可用idea的自带Maven工具直接打包,也可以使用命令打包。我是直接用工具的。
可以先clean然后再package,直接双击即可。这样就会在target打包成war,直接部署就好了。
以上。



