提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
记一次坑爹的引入jar包报错。
提示:以下是本篇文章正文内容,下面案例可供参考
一、问题和现象
因为需要集成各个手机厂商的系统消息推送,于是引入的各个厂商提供的sdk jar包,本地运行正常,然而准备install打包到测试环境时,提示找不到相关的jar和里面的类。
二、问题处理
1.确认引入jar包正常
``1.打开idea中 File -> project structure -> project settings -> libralies中确认需要的jar包已导入。
(实际上肯定是导入了的,因为我本地都已经能正常启动和调用了)
2.确认pom.xml的配置信息:
<dependency>
<groupId>opush-server</groupId>
<artifactId>opush-server-sdk</artifactId>
<version>1.0.6</version>
<scope>system</scope>
<systemPath>${basedir}/lib/opush-server-sdk-1.0.6.jar</systemPath>
</dependency>
<dependency>
<groupId>opush-server</groupId>
<artifactId>opush-server-sdk</artifactId>
<version>2.3</version>
<scope>system</scope>
<systemPath>${basedir}/lib/vpush-server-sdk-2.3.jar</systemPath>
</dependency>
2.报错信息
3.解决问题
本地运行正常,说明jar是正常引入了,install可以将项目本身编译并打包到本地仓库,此时发现找不到相关包和类,外部引入的jar包此时需要指定各自的坐标:即 groupid和artifactid。所以只需要将每个jar包配置成不同的id即可。
<dependency>
<groupId>opush-server-sdk</groupId>
<artifactId>opush-server-sdk</artifactId>
<version>1.0.6</version>
<scope>system</scope>
<systemPath>${basedir}/lib/opush-server-sdk-1.0.6.jar</systemPath>
</dependency>
<dependency>
<groupId>vpush-server-sdk</groupId>
<artifactId>vpush-server-sdk</artifactId>
<version>2.3</version>
<scope>system</scope>
<systemPath>${basedir}/lib/vpush-server-sdk-2.3.jar</systemPath>
</dependency>
总结
groupId和artifactId被统称为“坐标”。是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
引入的外部jar包应该是每个都理解成“不同的项目”,所以分别指定后,即可找到每一个jar。