学无先后,达者为师

网站首页 编程语言 正文

解决使用maven打jar包缺失依赖包问题

作者:FOX有爱 更新时间: 2022-05-17 编程语言

问题描述

今日,遇到一个问题,在用IDEA写好Java 代码之后,在IDEA运行没有问题,但是用maven打成jar包再运行的时候,却报缺失依赖包的情况。例如下面情况

pom.xml配置



    4.0.0

    org.example
    bigdata_project
    1.0-SNAPSHOT

    
        8
        8
    

    
        
            org.apache.hadoop
            hadoop-hdfs
            2.10.1
        

        
            org.apache.hadoop
            hadoop-common
            2.10.1
        

        
            org.apache.hadoop
            hadoop-mapreduce-client-core
            2.10.1
        

        
            org.apache.hadoop
            hadoop-client
            2.10.1
        

        
            junit
            junit
            4.12
            test
        

        
            org.apache.hive
            hive-exec
            3.1.2
        

        
            org.apache.kafka
            kafka-clients
            3.1.0
        

        
            org.apache.kafka
            kafka-streams
            3.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_project
    1.0-SNAPSHOT

    
        8
        8
    

    
        
            org.apache.hadoop
            hadoop-hdfs
            2.10.1
        

        
            org.apache.hadoop
            hadoop-common
            2.10.1
        

        
            org.apache.hadoop
            hadoop-mapreduce-client-core
            2.10.1
        

        
            org.apache.hadoop
            hadoop-client
            2.10.1
        

        
            junit
            junit
            4.12
            test
        

        
            org.apache.hive
            hive-exec
            3.1.2
        

        
            org.apache.kafka
            kafka-clients
            3.1.0
        

        
            org.apache.kafka
            kafka-streams
            3.1.0
        

    

    
        
            
                org.apache.maven.plugins
                maven-shade-plugin
                3.1.0
                
                    
                        package
                        
                            shade
                        
                        
                            
                                
                                    *:*
                                    
                                    
                                        META-INF/*.SF
                                        META-INF/*.DSA
                                        META-INF/*.RSA
                                    
                                
                            
                            
                                
                                    
                                    cn.kafkademo.ProducerDemo1
                                
                            
                        
                    
                
            

        
    

注意需要填写mainClass 和 excludes 否则会报错,如下图

然后再使用maven工具点击 clean 清除,点击 install 生成 jar包

使用cmd打开命令行,运行jar包,就能正常运行了

原文链接:https://blog.csdn.net/qq_15083919/article/details/124774995

栏目分类
最近更新