Linux下正确启动jar包

Linux下启动jar包,这是一个非常基础的技能。但是涉及的环节也比较多,也容易出错。一路踩坑过来,jar包无法正确启动,原因主要是集中在三个方面:

1.Java环境问题

         如何解决已经在上一篇文章里写的很详细了。

2.代码配置问题

3.Linux权限问题

主要是谈谈第二点和第三点怎么解决

       对于代码配置问题,首先要认识到开发环境和正式环境是有区别的,开发环境一般是windows或者MAC,服务器一般都是Linux。开发环境还有开发工具,一个jar包能在开发工具里启动正常,不一定脱离了开发工具就能启动。所以一个程序写好了,不要想当然的觉得扔到服务器上也能正常运行。

      在springboot中首先就要配置好Spring Boot Maven plugin,这样你才能打成一个正常的jar包。不会抛出no main manifest attribute, in xxxx-0.0.1-SNAPSHOT.jar这样的异常。

    在pom.xml中配置,代码如下:


 	
 		
 			org.springframework.boot
 			spring-boot-maven-plugin
 		
 	
 

          还有,SpringBoot工程一般是作为一个可独立运行的项目,不是作为某个项目的依赖,如果要将一个Springboot项目作为另外一个项目的依赖,需要另外配置,在此不叙述。

      设置好maven插件之后,一般就可以正常启动项目。但是如果是使用nohup命令,还有可能遇到这种情况:

     看起来好像项目已经启动了,还返回了PID,实际上报了一个ignoring input and appending output to 'nohup.out'的错误,这种情况下去查看这个项目的进程会发现实际上是没有的,也就是说这个项目并没有正常启动。

    出现这种情况的原因是对nohup.out日志没有写入权限,因为你执行nphup命令就会产生日志,日志默认就输出到nohup.out。而实际上给nohup.out赋权限也没解决的了。经过查找资料,最好的解决办法就是让输出的日志输出到一个有权限的地方,即不要简简单单的执行nohup xxx,而是 nohup  xxx>/dev/null 2>&1 去执行,xxx就是你需要执行的脚本,样例如下:

nohup java -jar chapter063-0.0.1-SNAPSHOT.jar>/dev/null 2>&1   --server.port=8080 &
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          以上就是我需要执行的脚本 

以上三个问题就是最近在服务器启动jar包遇到的问题整理以及解决办法。

执行启动命令:

再查看进程:

Linux下正确启动jar包_第1张图片

完美。

你可能感兴趣的:(Linux,java)