Linux 笔记 #03# 在 Debian远程服务器上运行 Java socket程序
2018-01-14 02:21
771 查看
[b]我试图做什么[/b]:把我的 Java代码放到服务器上运行,并成功与客户端进行
预备环境:刚安装好 MySQL 和 JVM 的 Linux远程服务器(
主要有如下几个步骤:
将编译好的代码打包成可执行的
附加:在无图形操作系统下运行 GUI程序所抛出的异常
附加二:让程序在断开远程连接后继续运行
参考资料:[IntelliJ IDEA 2017.3 Help] Packaging a Module into a JAR File
设置
2、在
首先,需要在Debian上导入相关的数据库,把预先准备的
通过
把 jar包传送到服务器(在这之前,请确认数据库密码是正确的!),并尝试启动它:
这个时候昨天写的笔记就起作用了 Linux 笔记 #02# Installing MySQL & Installing the Default JRE/JDK ,找到原来的教程安装另外一个版本的
3、
安装好后再次运行,大功告成图:
相应客户端:
刚开始连了好久连不上,然后谷歌了很久
只是有点好奇会发生什么,虽然考虑到无图形操作系统是没有提供这类接口的, 然而还是想试一下,看看会不会跑出来一个字符版的界面,结果显然是想多了。:p
参考资料二:https://www.zhihu.com/question/20709809
socket通信。
预备环境:刚安装好 MySQL 和 JVM 的 Linux远程服务器(
Debian 8.8)一台。
主要有如下几个步骤:
将编译好的代码打包成可执行的
jar包
在Debian上[code]用 JDBC 连接 MySQL
socket客户端进程连接
socket服务端进程
附加:在无图形操作系统下运行 GUI程序所抛出的异常
附加二:让程序在断开远程连接后继续运行
1、将编译好的代码打包成可执行的 jar包
参考资料:[IntelliJ IDEA 2017.3 Help] Packaging a Module into a JAR File
设置
Artifacts有两个关键点,把程序入口写入
MANIFEST.MF以及把编译后的代码添加进去(一定要包括依赖包,要不然丢服务器上跑会出现
ClassNotFoundException),这样才能创建可运行的 jar包。实测有效:
2、在Debian
上用 JDBC 连接 MySQL
首先,需要在Debian上导入相关的数据库,把预先准备的.sql 脚本通过
Xftp传到服务器上,传输好后执行如下操作:
readlink -f schema.sql # 取得 schema.sql 的绝对路径并复制它! mysql -u root -p source /root/schema.sql # 导入数据
通过
netstat -tln确认 MySQL 确实在监听 3306 端口:
Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
把 jar包传送到服务器(在这之前,请确认数据库密码是正确的!),并尝试启动它:
java -jar main.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: chatroom/main/ServerTest : Unsupported major.minor version 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:803) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method)
这个时候昨天写的笔记就起作用了 Linux 笔记 #02# Installing MySQL & Installing the Default JRE/JDK ,找到原来的教程安装另外一个版本的
JDK(早知道这样一开始就该安装
Oracle JDK8!)
3、socket客户端进程
连接 socket服务端进程
安装好后再次运行,大功告成图:相应客户端:
刚开始连了好久连不上,然后谷歌了很久
“如何打开 debian xxx 端口”,最后才想起是没有添加阿里云的
“安全组规则”,具体操作可以参考这个:阿里云服务器Tomcat无法从外部访问
4、附加:在无图形操作系统下运行 GUI客户端程序所抛出的异常
root@xkfx:~# java -jar chat.jar Exception in thread "main" java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it. at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204) at java.awt.Window.<init>(Window.java:536) at java.awt.Frame.<init>(Frame.java:420) at java.awt.Frame.<init>(Frame.java:385) at javax.swing.JFrame.<init>(JFrame.java:189) at chatroom.client.ui.component.impl.LoginFrame.<init>(LoginFrame.java:17) at chatroom.client.model.UIManager.init(UIManager.java:51) at chatroom.client.controller.InitializationController.main(InitializationController.java:12)
只是有点好奇会发生什么,虽然考虑到无图形操作系统是没有提供这类接口的, 然而还是想试一下,看看会不会跑出来一个字符版的界面,结果显然是想多了。:p
5、附加二:让程序在断开远程连接后继续运行
参考资料一:https://www.ibm.com/developerworks/cn/linux/l-cn-screen/参考资料二:https://www.zhihu.com/question/20709809
相关文章推荐
- Linux 笔记 #05# 断开远程连接后保持程序运行
- windows 下 java程序jsch连接远程linux服务器执行shell命令
- Java_socket程序学习03-一个客户端对一个服务器-交互(服务器端)--01
- Java_socket程序学习03-一个客户端对一个服务器-交互(客户端)--02
- Linux中设定让Firefox可以运行Java程序,然后老爸就可以在家与“小白”决象棋了!
- 用socket编写的linux反向远程管理程序(c/s模式)
- Java通过SSH2协议运行远程程序
- Linux下运行JAVA程序——JRE安装和配置
- 使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序
- 让Java程序作为linux的Daemon后台运行
- Linux下运行Java程序脚本
- 使用socket的Linux上的C语言文件传输顺序服务器和客户端示例程序
- 基于socket的Linux上的网络聊天程序--多线程的服务器
- Property文件找不到异常-java程序在Linux下运行出错
- Linux下安装JDK1.6并且运行java程序和java项目例子
- Linux下运行JAVA程序——JRE安装和配置
- Linux中设定让Firefox可以运行Java程序,然后老爸就可以在家与“小白”决象棋了!
- 获取Linux执行命令后的PID--管理部署在服务器的Java程序
- 一个将java程序运行在linux系统后台的脚本
- linux下运行java程序