Linux shell脚本启动jar运行java程序的实例分享
写在前面
昨天提了一个问题,最终完美解决问题,特此记录一下。
回顾问题 Linux shell脚本启动一个jar为什么抛出NoClassDefFoundError的异常?
好了,简单的分享一下过程吧!
从提问的问题中,我已经说明了,这个项目是个中间件,开发完了提供出来的是一个jar包,具体是干嘛的就不说了,最终就是要放在服务器上,启动这个jar。 有的牛牛估计傻了,什么,启动jar? 对的,你没有听错,就是启动jar。
一般来说,在开发工具里面 IDE / eclipse 里面我们启动程序的一个唯一入门就是main方法,那么要启动一个 jar,入口在哪里?
入口一样的也是main方法,只是我们脱离了开发工具,要用命令去执行程序了而已。
在windows中,我们可以在cmd中使用 java -jar XXX 的方式去启动 我们打好的jar。
说到这里,必须说说,在maven中打出来的jar
上面说到可以用 jave -jar 方式启动jar包,但是如果你是用maven进行开发管理的话,默认的打出来的jar包是不能运行的。
如图所示
这就是原始maven 打出来jar包,使用maven默认的package命令构建的jar包中只包括了工程自身的class文件,并没有包括依赖的jar包。
问题就在这里。
解决方法:
在pom.xml文件中
添加如下代码(问题中也已经写了)
<!-- 打包时 生产可运行的jar包 begin --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>这里写你的运行的类所在的package+className</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> <!-- 打包时 生产可运行的jar包 end -->
参考资料链接:maven-assembly-plugin插件的使用说明 http://chenzhou123520.iteye.com/blog/1706242 有需要的牛牛自己学习学习
好了,通过以上步骤,就可以生成2jar包
一个为:original-XXX-0.0.1-SNAPSHOT.jar,另一个为:XXX-0.0.1-SNAPSHOT.jar,其中original...jar里只包含了工程自己的class文件,而另外的一个jar包则包含了工程本身以及所有依赖的jar包的class文件。我们只需要使用第二个jar包就可以了。
如图所示
那么重点来了,jar包问题解决了,丢服务器的启动脚本在哪里?
少年别急,下载我分享的脚本,一探究竟吧!
我是最代码伊成,你值得关注我!
猜你喜欢
- Linux一键启动、停止、重启Tomcat sh脚本
- linux shell批量检测进程是否存在的脚本
- oracle dataguard清理日志shell脚本
- linux shell脚本编写的俄罗斯方块游戏实例代码,非常牛逼
- java操作linux shell的脚本ShellUtils.java
- 【小C出品】听闻阿里大神抢月饼没法过中秋节了,我也献上一份以前抢购某商城的秒杀js代码片段
- Spring Boot整合Flyway框架实现自动新建mysql数据库表,并且插入、删除数据
- 基于Python和selenium–广东省干部培训网络学院自动登录学习脚本
- java多线程调用Perl脚本操作数据仓库
- 【小C出品】Tomcat实现自动重启脚本
- 多网站监控bat脚本&脚本执行器v1.0
- java调用python代码

