已注销用户的gravatar头像
已注销用户 2016-12-21 10:07:04

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包是不能运行的。

如图所示

Linux shell脚本启动jar运行java程序的实例分享

这就是原始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包就可以了。

如图所示

Linux shell脚本启动jar运行java程序的实例分享

那么重点来了,jar包问题解决了,丢服务器的启动脚本在哪里?

少年别急,下载我分享的脚本,一探究竟吧!

 

我是最代码伊成,你值得关注我!


打赏

文件名:startup-ignite.rar,文件大小:0.422K 下载
  • /
    • /startup-ignite.sh
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友