解决运行jar包时-java.lang.ClassNotFoundException

我写了一个处理docx文档的程序,打包后运行,报错

java.lang.ClassNotFoundException: org.apache.poi.xwpf.usermodel.XWPFDocument

这里的原因是因为所有依赖的jar包都没有被一块打包进去

我起初以为是没有找到这个类,可能是版本问题,或者是maven常见的丢失打包,于是我换版本、重新编译、clean,package,都没有解决问题,于是我解压了jar包,发现里面除了我写的两个Java类以外什么一个jar包都没有,搞了半个多小时才找到这个问题,是没有打包进去。

网上查找解决办法,大多用到了一个maven插件


                org.apache.maven.plugins
                maven-assembly-plugin
                2.2-beta-5
                
                    
                    
                        jar-with-dependencies
                    
                
                
                    
                        make-assembly
                        
                        package
                        
                            single
                        
                        
                            
                                
                                    true
                                    lib/
                                    main
                                
                            
                        
                    
                
            

先上xml文件的代码

我这个小项目,只有两个类,一个是文档处理类,一个是main类,所以

main 这里就是我的程序入口,

我找到的解决办法是没有 下面的元素的


     true
     lib/
     main

没有加上这个元素之前,打包运行会出错

document-1.0-SNAPSHOT-jar-with-dependencies.jar中没有主清单属性

没有主清单属性,意思是没有找到程序入口,也就是main方法

所以加上了这个标签来指定我的main方法

如果你的是一个springboot项目,应该有所不同,可能是xx.xx.xxApplication(springboot自动生成的 application.java----带有@SpringbootApplication注解的)

下面加上一个小技巧,没难度--windows使用.bat脚本,点击执行jar包

这里其实没什么好说的,创建一个bat文件,写上要执行的命令

java -jar xxxxx.jar 

保存,点击就可以执行,如果想要后台运行,用 javaw 

你可能感兴趣的:(java,jar,开发语言,maven)