前言:
Linux系统下部署MC服务器
这里选用的系统是Ubuntu来进行演示,其他的Linux发行版类似
MC服务器是通过Mojang的EULA协议进行开放的
Java版需要拥有Java17/21的环境,BE版需要C语言环境<部分Linux发行版自带>
Java版部署教程
- 安装所需要的Java环境,例如Java21,Java17
Ubuntu安装Java环境最为简单便捷因为Ubuntu的官方软件仓库有完整的OpenJDK环境,安装命令如下
apt update #更新软件包
apt install OpenJDK-21-jdk #安装Java21的jdk环境
如何你的Java下载缓慢那可能是因为服务器的镜像源导致的,更换国内的镜像源即可,有一个很不错的镜像源更换脚本
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
该脚本的官方网站
镜像源一键更换
- 选择适合自己的Java版服务端
不过有一个值得一提的核心
- 运行我们的插件端服务器,Paper核心可以去PaperMC的官网下载由官方构建完毕的服务器核心然后使用我们的SFTP/FTP工具上传到服务器的任意目录位置上传完毕之后使用SSH工具连接至服务器并使用cd命令进入核心所在的目录如下图
例如我使用mkdir命令在根目录新建了一个mc的目录那么就是
mkdir /mc #在根目录新建一个mc的目录
cd /mc #进入这个目录
接着我们尝试启动我们的服务器我们通过ls命令可以查看当前目录下的所有的文件我的目录下有一个名为paper-1.21.4-231.jar的jar文件这个就是我们的服务器核心通过Java启动命令来启动它一般都是
java -jar paper-1.21.4-231.jar -nogui
用java命令启动Java程序,有两种方式:
通过指定入口类:java SomeClass。这里的SomeClass是main()方法所在的类。其一般格式为java [ options ] SomeClass[ arguments ]。
指定入口类所在jar包:java -jar SomeJar.jar。这里的SomeJar.jar是入口类所在的jar包。其一般格式为java [ options ] -jar SomeJar.jar [ arguments ]。
在一般格式中:
[ options ]:配置 Java 的虚拟机选项(或称 系统参数)
[ arguments ]:配置 Java 程序参数(或称 运行参数)
例如:java -Dfile.encoding=UTF-8 -Dusername=Joe Test hi a b c d
二、启动参数的类型
在启动Java程序时,可以指定两类参数,分别叫做虚拟机选项(VM options)和程序参数(program arguments)。
虚拟机选项 是指由JVM支持、用于设置虚拟机启动过程的参数。
程序参数 是指用户自定义的参数,在代码中可以通过main()方法的String[] args获取。
三、虚拟机选项(VM options)
虚拟机选项分为3类,分别是:
标准参数(-):所有的JVM实现都必须实现这些参数的功能,而且向后兼容。
非标准参数(-X):默认JVM实现这些参数的功能,但是并不保证所有JVM实现都满足,且不保证向后兼容。
非Stable参数(-XX):此类参数各个JVM实现会有所不同,将来可能会随时取消,需要慎重使用。
3.1 标准参数(-)
标准参数是指以-开头的参数。常见的标准参数如:
-client / -server: 指定虚拟机以client模式(Windows下的默认模式)还是server模式(Linux下的默认模式)启动。
-jar:指定以jar包的形式执行一个应用程序。要这样执行一个应用程序,必须让jar包的manifest文件中声明初始加载的Main-class,该类中必须有public static void main(String[] args)方法。
-verbose 或 -verbose:class:输出JVM载入类的相关信息,当JVM报告说找不到类或者类冲突时可此进行诊断。
-verbose:gc:输出每次GC的相关情况。
-verbose:jni:输出native方法调用的相关情况,一般用于诊断jni调用错误信息。
-X:输出非标准的参数列表及其描述。
-? 或 -help:输出java标准参数列表及其描述。
-version:输出java的版本信息,比如jdk版本、vendor、model。
-javaagent:jarpath[=options]:指定jvm启动时装入java语言设备代理。Jarpath文件中的mainfest文件必须有Agent-Class属性,代理类必须实现方法public static void premain(String agentArgs, Instrumentation inst)(和main方法类似)。当JVM初始化时,将按代理类的说明顺序调用premain方法。具体参见java.lang.instrument软件包的描述。
-enableassertions[:"..." | : ] 或 -ea[:"..." | : ]:用来设置JVM是否启动断言机制(从JDK 1.4开始支持),缺省时JVM关闭断言机制。
-disableassertions[:"..." | :<class ; ] 或 -da[:"..." | : ]:用来设置JVM关闭断言处理,一般用于相同package内某些class不需要断言的场景。
-enablesystemassertions 或 -esa:激活系统类的断言。
-disablesystemassertions 或 -dsa:关闭系统类的断言。
类加载路径
JVM的类加载路径通过-classpath
-classpath "D:\Program Files\Java\jdk1.8.0_231\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_231\jre\lib\deploy.jar"Files\Java\jdk1.8.0_231\jre\lib\deploy.jar"
使用-classpath后,JVM 将不再使用CLASSPATH中的类加载路径。(如果-classpath和CLASSPATH都没有设置,则JVM使用当前路径(.)作为类加载路径。)
JVM 搜索类的方式和顺序为:
Bootstrap:Bootstrap中的路径是JVM自带的jar或zip文件,JVM首先搜索这些包文件,用System.getProperty("sun.boot.class.path")可得到其值。
Extension:Extension是位于JRE_HOME/lib/ext目录下的jar文件,JVM在搜索完Bootstrap后就搜索该目录下的jar文件,用System.getProperty("java.ext.dirs")可得到其值。
User:User搜索顺序为当前路径、CLASSPATH、-classpath。用System.getProperty("java.class.path")可得到其值。
在标准参数中,有一类以-D开头定义的参数,叫做系统属性参数,用于在虚拟机的系统属性中设置属性名/值对。
系统属性参数
系统属性参数以-D
多个系统属性参数之间用空格隔开。如果value中有空格,则需要用双引号将该值括起来,如-Dname=”space string”。
参数可以是 Java 默认的,此类参数由 JVM 虚拟机自动识别并生效,例如-Dfile.encoding=UTF-8用于指定文件编码格式;
也可以是用户自定义的,例如-Dusername=Joe,程序中可以读取该参数值,执行相关逻辑。
如-Dspring.profiles.active=dev可以在SpringBoot启动中指定系统变量,用于多环境(开发、测试、预发、线上)的区分。
关于标准参数更详细的说明可以参看官方文档。
3.2 非标准参数(-X)
非标准参数又称为扩展参数,是指以-X开头的参数,可以通过java -X打印出所有的非标准参数。
常见的非标准参数如:
-Xms:指定JVM堆的初始大小(memory of start?),如-Xms3550m。
-Xmx:指定JVM堆的最大值(memory of maximum?),如-Xmx3550m。
-Xmn:指定JVM堆中新生代的大小(memory of nursery),如-Xmn2g。
-Xss:设置单个线程栈的大小(stack size),一般默认为512k。等同于-XX:NewSize。
-Xprof:跟踪正运行的程序,并将跟踪数据在标准输出输出;适合于开发环境调试。
-Xloggc::与-verbose:gc功能类似,只是将每次GC事件的相关情况记录到一个文件中。若与verbose命令同时出现在命令行中,则以-Xloggc为准。
-Xint:设置JVM以解释模式运行,所有的字节码将被直接执行,而不会编译成本地码。
更详细的说明可以参看官方文档。
3.3 非Stable参数(-XX)
非Stable参数是指以-XX开头的参数。
这类参数在JVM中可能是不健壮的,SUN也不推荐使用,后续可能会在没有通知的情况下就直接取消了。
但这些参数中有些的确很有用,比如我们经常会见到的-XX:PermSize、-XX:MaxPermSize。
这些参数可以大致分成三类:
行为参数(Behavioral Options):用于改变jvm的一些基础行为
性能调优(Performance Tuning):用于jvm的性能调优
调试参数(Debugging Options):一般用于打开跟踪、打印、输出等jvm参数,用于显示jvm更加详细的信息
更详细的说明可以参看官方文档。
四、程序参数(program arguments)
用户自定义的参数。在代码中通过main()方法的String[] args获取后,用户在代码中按约定的格式对其进行解析,得到所需的参数值。
最终,我们来看一个包含各类参数的java启动命令:
java -jar -server -Xmx3550m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps
-Dserver.connection-timeout=60000 -Dspring.profiles.active=online SomeJar.jar argument1 argument2
我们启动服务器之后会输出以下内容代表启动完毕,第一次启动需要同意EULA协议

我们可以使用vim命令来编辑eula.txt文件
vim eula.txt
将eula=false修改成eula=true即可
然后我们再次启动服务器就会正常启动
输出以下内容代表服务器启动完整
接着我们打开对应版本的我的世界客户端连接服务器即可
服务器的IP为你的服务器IP若有多个IP可在
server.properties
中进行绑定IP,端口为25565,若端口被占用也可在该文件中修改,请放行服务器防火墙的25565端口之后连接服务器即可若需要添加插件请将适配Paper服务器核心的插件文件放入plugins文件夹中并重启服务器
到此Java版的服务器部署教程到此就结束了