前言:
本片博客的目的是记录一下IDEA中打包Java程序为jar包,然后再Linux环境下运行jar包的过程。也就是这样的话,打包的jar包就可以放到阿里云服务器上运行,可以实现远程访问服务端。
一、IDEA中的项目结构
IDEA中的项目结构是这样子的:
其中的src中的每一个Java文件都是一个类文件,里面都有一个主函数,也就是这个仅仅只是Java的简单应用程序而已。
如下图所示:
Server中的main:
Client中的main(每个Client中都有一个main函数,也就是这6个Client中各有一个main函数,一共6个main函数):
二、生成META-INF文件
- 点击菜单栏中的
File->Project Structure
选择主类,这里主类有超多个,因为我这些文件里面都有main()函数,所以都可以作为主类。选择一个Server1当作主类,这时会生成Server1的jar包。
点击OK
点击下方的Apply,点击OK。
这时在当初选主类的时候所选择的文件夹里面会产生一个META-INF文件:
文件内容如下:
意思就是生成的jar包所指定的主类,之后再生成其他jar包的时候,直接修改它就可以。
三、生成jar包
再确认META-INF中的文件无误后,点击Build->Artifacts
点击Build,生成jar包,静待一会后,在out文件夹下会出现jar包。
如此,jar包就生成了。在Windows文件夹下如图:
这里生成的jar包叫做TCP_Socket.jar,这个名字是可以重命名的,可以改成任意名字,这里将它改为Server.jar。
如果需要生成Client.jar文件,只需要修改META-INF中的Main-Class:
字段即可,如:生成Client的jar包。
可以直接在文件中进行修改,然后再Build一下就可以了。
如生成Client1的jar包:
依次类推,只需要简单的修改一下文件,再次Build即可。
四、Windows环境下运行jar包
在cmd下:
使用java -jar TCP_Socket.jar
命令运行jar包。显示结果其实就和控制台显示的一样,因为我这里是一个服务端,代码程序上,并没有显示啥东西,况且IP也不是本地IP,是虚拟机里面的网络的IP,所以我就不运行了。
五、Linux环境下运行jar包
-
虚拟机环境下安装jre
如上图所示安装好jre之后,就可以使用java -jar xxx.jar
命令了。(注意,安装jre只需要在运行jar文件的主机安装即可,这里R2仅仅只是一个路由器,不需要安装jre,这仅仅只是一个示例安装命令而已) -
虚拟机网络内网如图所示:
如果所示,我将要在R1安装jre部署Server端,在H3安装jre部署Client端。在R1、H2中分别运行安装jre的命令。 -
运行jar包
在R1中执行命令java -jar Server.jar
,在H3中执行命令java -jar Client.jar
,运行两个jar包。运行结果如下:
六、内网IP说明
这里的Server端与Client端之所以能够通信,是因为在Java源代码中就写好了Server中绑定的IP号与端口号,Client去连接指定的IP下的端口号,实现通信。
Server中的源代码如下:
可以看到Server中绑定的IP为R1的104网段的IP地址,开放端口为8000 。
Client中的源代码如下:
可以看到Client端,连接Server端的IP与端口。
这也是为什么我不在Windows环境下运行jar包的原因,因为在源代码中的IP写的是虚拟网络中的内网IP。
七、结语
综上,打包好jar包之后,在Linux上安装jre,就可以用java -jar xxx.jar
来运行jar包了。在普通的网络编程中,可以将Server端打包好,放到远程服务器上。也算是一个简单的服务器叭。
完结了,撒花撒花,hhhhhhhh