Linux 笔记 #03# 在 Debian远程服务器上运行 Java socket程序

试图做什么 :把我的破代码放到服务器上运行,并成功与客户端进行 socket通信

预备环境: 刚安装好 MySQL 和 JVM 的 Linux远程服务器( Debian 8 )一台。

主要有如下几个步骤:

  1. 将编译好的代码打包成可执行的 jar包
  2. 在 Debian 上 用 JDBC 连接 MySQL
  3. socket客户端进程 连接 socket服务端进程

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无法从外部访问

博客园精华区稿源:博客园精华区 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 综合编程 » Linux 笔记 #03# 在 Debian远程服务器上运行 Java socket程序

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录