IDEA使用Maven工具打包带有外部jar包时出错 - 提示程序包不存在和找不到符号

致谢: Qshadow (DOSKEY_jason)

1 环境描述

1.1 开发环境: IDEA-2018.3
1.2 新建的项目结构: 父空项目(EmptyProject)下带有1个子Maven项目

在这里插入图片描述
在这里插入图片描述

2 业务需求(工作目标)

为带有外部jar包作依赖的子项目(NCDemo),使用maven工具打包,如下图所示。
子项目使用外部jar包,现在需要打包子项目生成新的一个jar包。
在这里插入图片描述

3 子项目中准备的外部jar包

3.1 子项目中使用的jar包名

netcdfAll-5.4.1.jar

物理路径:D:\EmptyProject\NCDemo\lib\netcdfAll-5.4.1.jar

3.2 子项目中引入外部实体jar包作 依赖

在这里插入图片描述

3.3 jar实体引入成功,同时相关代码加载成功(import jar包中的类不爆红)

在这里插入图片描述

4 为成功引入外部依赖的子项目NCDemo进行打包 (出现问题)

使用IDEA的Maven工具,进行clean和package操作

4.1 Maven工具界面,clean和package操作

在这里插入图片描述

4.2 对其使用package操作后报错:找不到程序包和符号!

但是IDEA中明明已经引入成功了外部jar包的依赖,见步骤3.3

在这里插入图片描述

5 已经引入外部jar后 Maven打包时仍找不到程序包的 解决方案

5.1 对子项目NCDemo的pom文件进行修改,让Maven工具识别需要的外部jar包

为pom文件配置本地的jar包。
其中groupId,artifactId,version可以任意取。

	<dependencies>
        <!--添加的本地的外部jar包依赖-->
        <dependency>
            <groupId>netcdf</groupId>
            <artifactId>ucar</artifactId>
            <version>4.6.15</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/netcdfAll-5.4.1.jar</systemPath>
        </dependency>
    </dependencies>
5.2 再次clean后进行package命令,打包NCDemo子项目

在需要打包的子项目中,对外部依赖的jar包配置pom文件中的依赖后。 打包成功!

在这里插入图片描述

6 总结

在IDEA中 project structure 为子项目 NCDemo添加 jar包依赖 只是为了让IDEA环境识别使用的外部jar包。(未让Maven工具识别该外部jar包)

在子项目的pom.xml文件中为其添加本地jar包的依赖(步骤5.1),是为了让Maven工具识别该jar包。

即:IDEA识别外部jar包 与 Maven工具识别外部jar包是独立的,他们是两回事。

同时,Maven项目的pom.xml文件,不仅可以配置远程仓库的依赖(如阿里云镜像),也可以配置本地的jar包依赖。(步骤5.1)

7 注意事项

在IDEA中使用内部Maven工具,对本地jar包成功引入当前环境,使Maven识别后,

在部署项目时 仍然会提示找不到本地依赖包中某个类

原因是本地jar包只是被当前IDEA环境中的Maven识别,但实际未被打入生成的jar包中

具体解决方法参见

代码指定需要打入 最终生成jar包的 本地外部jar包

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值