每个人的第一次开服,都会在同一个地方卡住:明明照着教程做了,终端就是不出 Done,或者朋友那边一直显示“连接超时”。你会怀疑手机不行、核心有问题、教程过时了,然后开始删了重下——而问题往往不在这些地方。
更麻烦的是,Minecraft 服务端有很多反直觉的设计:点一下 .jar 不等于启动,内存给得越多反而越容易崩,关掉正版验证看起来“更方便”却等于拆掉门锁。这些坑不看一遍,几乎必然踩。
下面 14 条覆盖了新手最常遇到的情况,每条都按同一个格式写:你会看到什么 → 真正的原因 → 正确做法。不需要背,出问题时回来对照现象找就行。
这一页解决什么:把“我明明做对了为什么还是不行”翻译成具体原因,避免重复重装。
照做之后你会看到:遇到问题时你能先定位到是哪一类坑,而不是把核心删了重下。
只有终端出现 Done,端口才真正接受连接,状态显示“运行中”不算。
4 GB 手机给 1024~1536 MB 就够了,再往上加只会更容易被系统杀掉。
最容易造成不可逆损失的坑:点一下还原就会覆盖存档,没有确认框。
先扫一眼:14 个坑的速查表#
细节在后面。已经出问题的人,先在「你会看到」这一列找到现象,再跳到对应小节。
| 坑 | 你会看到 | 后果 | 正确做法 |
|---|---|---|---|
| 点 jar 启动 | 点了没反应、闪退 | 以为手机不能开服 | 用应用内的启动按钮 |
| 内存乱给 | 卡顿,或进程直接消失 | 被系统杀 / 内存溢出 | 按设备内存给,见 内存分配 |
没等 Done | 朋友连接超时 | 误判成网络问题 | 等终端出现 Done 再发地址 |
| 版本不匹配 | Incompatible version | 进不去 | 客户端与服务端同版本 |
| 插件模组混装 | 重启后毫无变化 | 白折腾一小时 | 先确认核心类型 |
| 不备份就折腾 | 世界打不开 | 存档丢失 | 先备份再升级/装模组 |
| 关正版还开公网 | 陌生人进服 | 被破坏、被冒名 | 开白名单,见 白名单 |
| 随手点还原 | 世界变回旧样子 | 新进度全部丢失 | 还原前先手动备份 |
| 来源不可信 | 版本对不上、莫名报错 | 后门、盗号风险 | 只从官方渠道下载 |
启动与安装的坑#
坑 1:在手机上点 .jar,以为能开服#
现象:在文件管理器里点了 server.jar,要么提示“无法打开”,要么弹出一堆乱码,服务端根本没起来。
原因:.jar 是 Java 程序包,不是安卓应用。安卓不会像 Windows 那样“双击运行”,它需要一个 Java 运行时加上一串启动参数才能真正跑起来,这些正是 Minexa 替你做的部分。
正确做法:核心用「下载」页下载,现成的服务端用「导入服务器」导入,启动一律走概览页的启动按钮。不要试图用文件管理器执行 jar,也不用装什么“jar 运行器”。
坑 2:内存给太小,或者给太大#
现象:给 512 MB,跑一会儿就卡死或报 OutOfMemoryError;给 4096 MB,手机反而把整个应用杀掉,日志里一行错误都没有。
原因:启动设置里的「JVM 内存上限」是 JVM 能用的堆内存天花板,不是“手机分给服务端的全部资源”。超过手机实际能腾出的内存时,Android 会直接杀掉服务端——这种死法不留崩溃日志,最容易被误判成核心坏了。
正确做法:4 GB 手机给 1024~1536 MB,6 GB 给 1536~2048 MB,8 GB 以上再考虑 2048~3072 MB;同时减少人数和视距。别用“加大内存”解决卡顿,卡顿通常是视距和实体太多。详见 内存分配。
坑 3:没等 Done 就让朋友进#
现象:概览页状态已经变成“运行中”,朋友那边还是连接超时;或者刚启动就有人进来,世界还没加载完,人卡在半空。
原因:进程起来了,不等于服务端就绪。核心还要读配置、加载或生成世界,最后才会绑定端口(端口 = 同一台手机不同程序的门牌号)。在那之前,连接请求根本没人在听。
正确做法:等 Done (…s)! For help, type "help" 出现,再复制地址发给朋友。第一次启动要生成世界,1~3 分钟都算正常。
坑 4:反复点启动、反复杀应用#
现象:点了启动没反应,又点几次;觉得卡了就把应用从后台划掉重开,结果日志越来越乱,还不知道自己下到哪一步。
原因:启动是一个连续过程,重复触发会让几个阶段互相干扰。强制杀掉应用还可能留下写了一半的世界文件或没完成的初始化。
正确做法:点一次,然后盯终端和启动阶段。超过 3 分钟没有任何新输出,再按 启动失败排查 处理。等待期间不要切换页面试探。
看终端有没有新行滚出来。还在刷(哪怕刷的是看不懂的英文),就是还在干活;连续 3 分钟一行都不动,才是真卡住。终端默认只保留最近 300 行,别翻到上面去数,看最后几行就够。
坑 5:以为「停止」是立刻关,随手就用强制停止#
现象:点了停止,状态还是“运行中”,以为卡住了就点「强制停止」,下次进服发现丢了一段进度,甚至世界回退。
原因:普通「停止」的做法是向控制台发送 stop 命令,让服务端把世界存盘再退出,最多等 180 秒,超时也不会硬杀,而是提示你可以点「强制停止」。强制停止是直接掐进程,没存盘的数据就没了。
正确做法:点停止后耐心等,看到状态变回未运行再动手机。只有确实卡死(比如几分钟毫无输出)才用强制停止,并且当场做好“可能回退到上次存档”的心理准备。另外这里没有独立的「重启」按钮,重启就是先停止、再启动。
版本与内容的坑#
坑 6:客户端和服务端版本不一致#
现象:游戏里显示 Incompatible version,或者服务器列表里那一行直接标红、显示问号。
原因:Java 版的客户端和服务端按协议版本对话,1.21.4 的客户端进不了 1.21.1 的服。只有服务端装了跨版本插件才可能放宽,而配那个插件本身又是一堆新坑。
正确做法:先问清楚朋友客户端的版本号,再在下载页选同一个版本。升级服务端之前,先确认所有人的客户端也能升到那个版本。
坑 7:在 Paper 上装模组,在 Fabric 上装插件#
现象:把 .jar 丢进 mods/ 或 plugins/,重启后什么都没发生;或者启动直接报错,日志里一串看不懂的类名。
原因:插件和模组是两套完全不同的扩展机制。Paper 系核心只认 Bukkit/Spigot/Paper 插件;Fabric、Forge、NeoForge 只认对应加载器的模组。文件后缀都可能是 .jar,但内容完全不通用。
正确做法:先确认自己的核心类型,再决定装插件还是模组。两者的关系、各自放在哪个目录,见 核心、插件、模组、代理端;装完记得重启服务端,热加载对大多数插件都不可靠。
坑 8:Java 版本不匹配,尤其是 1.16 及以下#
现象:启动秒退,日志里出现 UnsupportedClassVersionError,或者提示需要 Java 8。
原因:不同 Minecraft 版本要不同 Java:1.16 及以下通常要 Java 8;1.17~1.20.6 要 Java 17;1.21 及以后要 Java 21。而 Minexa 的 Termux 与 Pojav 来源里都没有 Java 8,Java 8 只在 PRoot 容器里。
正确做法:开 1.16 及以下的服务端,就把运行环境切到「PRoot Linux 容器」+「Ubuntu 20.04」+「Java 8」,别在 Termux 里翻来翻去找 Java 8。注意 PRoot 不提供真实 Root,服务端目录在容器里显示成 /srv/mineserve。详见 运行环境管理。
坑 9:把整合包当插件丢进 plugins/#
现象:下载了一个 .mrpack 或整合包压缩包,解压后把里面的 jar 全丢进 plugins/,重启后不是报错就是毫无反应。
原因:整合包是“模组 + 配置 + 资源”的集合,不是插件包;.mrpack 有它自己的清单格式,需要按整合包导入,服务端模组也应该进 mods/。
正确做法:用下载页的「导入服务器」导入 .mrpack,让应用去处理服务端文件;普通压缩包导入前先确认里面是完整的服务端目录。看 导入服务器与整合包。
资源与后台的坑#
坑 10:不备份就升级、降级、装模组、还原#
现象:升级核心后世界打不开;装完模组进服就崩;手滑点了一下还原,几天的进度变成上周的样子。
原因:世界数据有版本格式,往新版本走容易,往回退很难;模组和插件可能改世界数据;而还原操作没有二次确认,点一下就执行,还会自动把服务端停掉。
正确做法:任何“可能改世界”的操作前,先手动备份一份,并导出到电脑或网盘。还原是点一下立即执行,所以“还原前先另存一份”不是建议,是必须。完整的策略见 备份策略。
世界还原、整服还原都是点一下立即执行,不会弹“确定吗”。它还会自动发 stop 并最多等 10 秒,然后强制停服。做还原之前,先手动创建一份当前备份,再确认你选的快照是不是想要的那一份。
坑 11:以为服务端“自己崩了”,其实是被系统杀了#
现象:锁屏一段时间后服务器消失,日志里没有任何崩溃记录,进程就那么断了;再打开应用,世界还在,只是人掉了。
原因:Android 的省电策略、厂商清理、内存压力都会杀后台进程。Minexa 的前台服务和唤醒锁只能尽量保活,做不到对抗系统——这一点所有安卓应用都一样。
正确做法:把 Minexa 加进电池优化白名单、允许自启动、开服时插电、打开屏幕常亮或悬浮窗。看 后台保活。判断方法:日志没有异常就消失,优先怀疑被系统杀;日志最后有 Exception 或 crash-reports 里有新文件,才是真崩溃。
网络与安全的坑#
坑 12:关了正版验证,还把端口开到公网#
现象:为了让人进来关了 online-mode,结果陌生人进服、冒名顶替、建筑被拆。
原因:离线模式下服务器只认名字不认账号,任何人都能叫 Steve,也能叫你的名字;名字能随便冒充,OP、白名单、封禁就都失去意义。
正确做法:关掉正版验证的机器必须开白名单,只放认识的人进来;公网只开放必要的游戏端口,不要把 RCON、FTP、MCP 这些管理入口一起暴露出去。看 白名单、OP 与封禁。
坑 13:端口没通,就反复重装服务端#
现象:朋友进不来,于是删核心、重下载、换版本、重装应用,折腾两小时还是进不来。
原因:服务端可能一直是好的,问题在网络:不在同一个 Wi-Fi、没有公网 IP、端口没映射、运营商 CGNAT(运营商在你和公网之间又加了一层转发)、或者防火墙拦截。
正确做法:按层次排查,别跳步:服务端是否真的出现 Done → 端口是否在监听(终端里有绑定端口的日志)→ 同一个 Wi-Fi 能不能连 → 跨网络时隧道是否在线 → 客户端版本是否一致。见 联机排错。
坑 14:从不可信来源下载核心和插件#
现象:核心、插件、整合包来自网盘、论坛附件、群文件,装上去版本对不上,或者莫名多了一堆你没装过的东西。
原因:Minecraft 生态里改过的 jar 非常常见;服务端一旦运行,恶意插件就能执行任意代码、读你的文件、偷令牌,还能拿去挖矿。这类东西杀毒软件基本查不出来。
正确做法:核心优先用 Minexa 下载页(它对接官方 API);插件用 Hangar、SpigotMC、Modrinth 这类有审核的平台;模组走 Modrinth、CurseForge 的官方页面。清单见 可信资料链接。
在电脑上开服,中文路径确实容易让 Java 找不到文件;但在 Minexa 里,服务端目录由应用管理,界面显示的中文名不等于真实文件夹名(落盘时会被转写),通常不会因为显示名是中文就启动失败。真正要注意的是手动导入、迁移、用 FTP 或电脑拷贝文件时——这些场景建议用英文目录名。
出问题时的正确顺序#
踩坑不可怕,可怕的是顺序错了,把可恢复的问题折腾成不可恢复。
先分清现象:启动没出
Done、出了Done但连不上、玩着玩着断了,三类排查方向完全不同。再留证据:终端最后 20 行、崩溃报告里的关键片段,先截图或复制再动手改。
一次只改一个变量,改完看日志,否则你分不清是哪一步生效的。
动世界之前先备份;重装放到最后——它会清掉线索,多数失败在日志里能直接读出来,见 小白看日志。
终端最后一行是
Done (...s)! For help, type "help",不是Starting server或红字。启动设置里的内存上限,数值没有超过手机运行内存的一半。
mods/或plugins/里没有放错类型的 jar:Paper 服里没有模组,Fabric 服里没有插件。关过正版验证的话,玩家页的白名单里能看到每一个允许进入的名字。
最近一次备份的时间,晚于你最后一次改配置或装插件的时间。