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

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

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

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

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

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

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2-beta-5</version>
                <configuration>
                    <!-- get all project dependencies -->
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <!-- bind to the packaging phase -->
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <manifest>
                                    <addClasspath>true</addClasspath>
                                    <classpathPrefix>lib/</classpathPrefix>
                                    <mainClass>main</mainClass>
                                </manifest>
                            </archive>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

先上xml文件的代码

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

<mainClass>main</mainClass> 这里就是我的程序入口,

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

<manifest>
     <addClasspath>true</addClasspath>
     <classpathPrefix>lib/</classpathPrefix>
     <mainClass>main</mainClass>
</manifest>

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

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 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值