最近需要将一个用了websocket和netty的java服务端项目放在服务器上,然后由我们的硬件设施发送数据给服务端

先匿了自己的服务器ip,就假设为128.219.147.135吧,我的服务器是Ubuntu 18.10系统

一、我们需要在远程服务器上下载jre。(jre是java程序运行时需要的环境,包含了jvm和java核心类库;而jdk是java开发的工具包,包含了jre、java工具和一些基础类库。)

1、先看一下能在你的系统中可用的openjdk包

apt-cache search openjdk

使用Java做好的项目怎么打包发给别人 怎么把java项目发给别人_jar

 

每一行代表啥就不说了,附上一张别人的注释,原网址链接原作者连接,我安装的时候看的就是这篇


使用Java做好的项目怎么打包发给别人 怎么把java项目发给别人_jar_02

2、安装jre

可以在服务器中直接输入java,如果你没有安装jdk/jre会提示你安装命令,形式和下面这条差不多

apt-get install openjdk-8-jre

 安装完java可以通过命令java -version看一下版本,接下来设置一下JAVA_HOME

在设置JAVA_HOME之前需要知道java安装路径

下面这条命令需要确保在根目录下运行,cd ..多敲几遍

find -name libjvm.so 2>/dev/null

可以看到我服务器这边下载了两个版本

 

使用Java做好的项目怎么打包发给别人 怎么把java项目发给别人_服务器_03

分别运行下列两条语句设置环境变量

echo "JAVA_HOME=/usr/lib/jvm/java-9-openjdk-amd64/" >> /etc/environment


source /etc/environment

 再运行下面这条语句检查一下环境变量的配置


echo $JAVA_HOME


二、将java项目打包

我用的是idea,打包的流程如下

1、打包的一些属性设置

File-Project Structure-Artifacts-点加号-jar-From modules and dependencies(如果你的程序中引入了第三方包,并且需要在项目jar包中包含引入的jar包,就需要选这个;如果没有引入第三方包或者不需要把引入的第三方包夹杂进去,可以选Empty),把你项目的mudule加进去。如下图,Output directory就是你之后打包完jar包存放的地址,Include in project build要勾上,否则接下来build module不会生成jar包,至于为啥别问,问就是不知道。

使用Java做好的项目怎么打包发给别人 怎么把java项目发给别人_服务器_04

2、打包项目

Build-Build Module 项目名

就能在之前设置的Output directory下看到生成的jar包了。

使用Java做好的项目怎么打包发给别人 怎么把java项目发给别人_jar_05

 3、测试(我这边的jar包叫SocketCommunication)

terminal中首先要通过cd命令进去SocketCommunication_jar目录,然后执行下列命令

java -jar SocketCommunication.jar

 可以看到我的socket项目已经跑起来咯

使用Java做好的项目怎么打包发给别人 怎么把java项目发给别人_使用Java做好的项目怎么打包发给别人_06

当然有一些运行时的优化命令

方法一:&表示后台运行,ssh窗口不被锁定,但是关闭窗口程序会终止
java -jar xxx.jar &
方法二:nohup表示不挂断运行,即使关闭中断程序依然是运行的
nohup java -jar xxx.jar & 
方法三:>/usr/local/temp.txt表示将所有启动时的日志都记录大temp.txt文件中
nohup java -jar xxx.jar >/usr/local/temp.txt &

岔开一下话题,如果用了nohup,如何关闭java进程呢?

查看java进程,会有端口号xxxx显示出来
ps -ef | grep java

终止进程
kill -9 xxxx

 

三、将jar包上传到服务器运行

1、连接到服务器之后我创建了一个demo目录,你要是想直接把jar包放在根目录也不是不可以

linux下创建目录:mkdir 目录名

删除文件:rm 文件,这个只能删除文件不能删除文件夹目录

删除目录及下所有子目录:rm -rf 目录

修改文件名:mv 旧文件名 新文件名

2、接下来就是通过scp命令上传了

scp 文件目录 服务器用户名@服务器ip:服务器目录

以我的目录服务器举例,注意到下面的 /* 了吗,这条命令会把SocketCommunication_jar目录下的所有子目录都上传上去

scp /Users/***/IdeaProjects/WebPro/out/artifacts/SocketCommunication_jar/* root@128.199.170.175:/demo

使用Java做好的项目怎么打包发给别人 怎么把java项目发给别人_java项目打包_07

上传完成可以通过ls命令看一下,可以看到我demo目录下已经有这些文件了

使用Java做好的项目怎么打包发给别人 怎么把java项目发给别人_java_08

3、服务器上执行之前的java -jar命令运行jar包即可

 

使用Java做好的项目怎么打包发给别人 怎么把java项目发给别人_jar_09

over!这时候就可以通过公网ip访问你的项目啦

 

参考的大佬文章


https://www.linuxidc.com/Linux/2017-11/148941.htm

还有很多找不到了,感谢