今日,遇到一个问题,在用IDEA写好Java 代码之后,在IDEA运行没有问题,但是用maven打成jar包再运行的时候,却报缺失依赖包的情况。例如下面情况
pom.xml配置
4.0.0 org.example bigdata_project1.0-SNAPSHOT 8 8 org.apache.hadoop hadoop-hdfs2.10.1 org.apache.hadoop hadoop-common2.10.1 org.apache.hadoop hadoop-mapreduce-client-core2.10.1 org.apache.hadoop hadoop-client2.10.1 junit junit4.12 test org.apache.hive hive-exec3.1.2 org.apache.kafka kafka-clients3.1.0 org.apache.kafka kafka-streams3.1.0
settings.xml配置
alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ *
IDEA配置
其余都是默认配置
IDEA运行代码正常:
使用maven工具点击 clean 清除,然后点击 install 生成 jar包
打开cmd命令行界面,运行jar包某个类,出现异常,如下图
问题分析以及解决办法
这时候,如果你将这个jar包解压,你会发现,除了自己写的代码,并没有把需要依赖的包打进去,jar包里面空空如也!可以判定,使用maven打包的时候,并没有把依赖包也打进去!
参考文章
https://www.cnblogs.com/chenmingming0225/p/13204247.htmlhttps://www.cnblogs.com/chenmingming0225/p/13204247.html
maven-shade-plugin 插件介绍
maven-shade-plugin介绍及使用_库昊天的博客-CSDN博客_maven maven-shade-plugin基本功能maven-shade-plugin提供了两大基本功能:将依赖的jar包打包到当前jar包(常规打包是不会将所依赖jar包打进来的);对依赖的jar包进行重命名(用于类的隔离);Goals maven-shade-plugin 只存在一个goal shade:shade,需要将其绑定到 phase package 上,使用框架如下:<project>...https://blog.csdn.net/yangguosb/article/details/80619481
解决办法,需要在pom.xml文件添加 plugin java编译插件,maven的编译插件有很多,我添加的是maven-shade-plugin插件,代码如下
4.0.0 org.example bigdata_project1.0-SNAPSHOT 8 8 org.apache.hadoop hadoop-hdfs2.10.1 org.apache.hadoop hadoop-common2.10.1 org.apache.hadoop hadoop-mapreduce-client-core2.10.1 org.apache.hadoop hadoop-client2.10.1 junit junit4.12 test org.apache.hive hive-exec3.1.2 org.apache.kafka kafka-clients3.1.0 org.apache.kafka kafka-streams3.1.0 org.apache.maven.plugins maven-shade-plugin3.1.0 package shade *:* META-INF/*.SF META-INF/*.DSA META-INF/*.RSA cn.kafkademo.ProducerDemo1
注意需要填写mainClass 和 excludes 否则会报错,如下图
然后再使用maven工具点击 clean 清除,点击 install 生成 jar包
使用cmd打开命令行,运行jar包,就能正常运行了



