Linux —— 部署jar包的方式及遇到的问题

一、部署Jar包的方式

  1. 直接 java -jar xxx.jar
    这种方式会将程序的输出打印在窗口中,一旦接收到 ctrl + c 指令就结束程序,程序不会在后台执行。
  2. 使用 java -jar xxx.jar &
    这种方式会使程序在后台进行,和第一种方式的区别是,程序在接收到 ctrl + c 后程序进入后台继续执行,但是输出不会打印在窗口中。
  3. nohup 与 & 结合使用
    nohup用于不挂断地运行命令,一般与 & 一起使用。第三种与第二种的区别是,第二种启动方式一旦当前终端关闭,程序也会关闭。而第三种在终端关闭后仍会自动执行,且遇到ctrl + c 也会结束程序。
    在这里插入图片描述
  4. 其他命令
    ① jobs :查看当前终端后台执行的任务,换了终端就看不见了
    ② ps:查看后台执行的任务,不局限于某一个终端。
    ③ fg :将后台进程调制前台运行
    ④ crtl + z:将程序转入后台,同时程序进入暂停状态
    ⑤ bg :指定后台程序,将后台暂停的程序变成继续执行状态
    ⑥ kill:杀死进程
jobs  #假设含有jobnum为1的任务
ps -aux|grep java	#ps用法,java可改为不带后缀jar包名以更精确匹配
fg 1  #后面数字为程序对应的jobnum,需先用jobs查出
bg 1  #后面数字为程序对应的jobnum,需先用jobs查出	
kill -9 12345 #12345为假定进程id

二、踩坑记录

  1. idea将SpringBoot连同依赖导出成一个jar包,启动jar包失败
org.springframework.boot.SpringApplication - Application run failed
java.lang.IllegalArgumentException: No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.
	at org.springframework.util.Assert.notEmpty(Assert.java:464)
	at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getCandidateConfigurations(AutoConfigurationImportSelector.java:173)
	at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.getAutoConfigurationEntry(AutoConfigurationImportSelector.java:116)
	at org.springframework.boot.autoconfigure.AutoConfigurationImportSelector$AutoConfigurationGroup.process(AutoConfigurationImportSelector.java:396)

解决方法:在pom.xml中加入以下内容。

 <build>
    <plugins>
       <plugin>
          <groupId>org.springframework.boot</groupId>
          	<artifactId>spring-boot-maven-plugin</artifactId>
            	<executions>
                	<execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
        </plugin>
    </plugins>
  </build>

加入此依赖后,在控制台执行 mvn clean install -Dmaven.test.skip 。
在这里插入图片描述
产生的jar包在targer目录下。
在这里插入图片描述

  1. 提示:No main manifest attribute, in XXX.jar
    正常情况下,java打包成jar包需要在MANIFEST.MF中指定Main-Class项以便运行java -jar XXX.jar时找到对应的主类。因为-jar的含义就是后面跟的jar包是有main class可独立运行,所以需要在打包成jar包时指定这个类。
    如果想运行时指定想要运行的类,此时应该用 -cp 来指定,比如:java -cp XXX.jar 全限定类名

参考资料:
https://www.jb51.net/article/169783.htm
https://www.cnblogs.com/qingmuchuanqi48/p/11723541.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值