zh
切换语言
  1. PowerNukkitX
  2. 快速入门
  3. 服务器配置

    1. server.properties
    2. nukkit.yml
    3. pnx-cli-config.ini
    4. 反矿透
    5. 资源包加密
    6. 硬件加速压缩
    7. 使用WaterDogPE
    8. 超平坦世界
  4. FAQ

    1. 新人必看
    2. PNX-CLI教程
    3. 常见问题
    4. Terra问题
    5. 重生点问题
    6. 转换地图
  5. 开发者文档

    1. Java

      1. 跳转到JavaDoc
      2. Mod API

        1. 自定义方块
        2. 自定义物品
        3. 自定义实体
        4. 自定义附魔
      3. 生物AI

        1. 行为
        2. 记忆
        3. 传感器
        4. 运动控制器
        5. 寻路器
        6. 行为组
        7. 工作周期
    2. JavaScript

      1. 配置开发环境
      2. 基于LLSELib开发
      3. Hello World
      4. 基本知识
      5. 事件监听
      6. 常见开发问题
    3. API

      1. 简介
      2. 通用API
      3. Git-API
      4. 下载API
      5. 延迟返回API
      6. 插件API
    4. 实用资源

      1. 事件对照表
      2. 物品方块ID

常见开服问题

java.lang.reflect.InaccessibleObjectException

简易处理方式

启动命令在-jar前面加上--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED
例如:

Java17目录\bin\java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED -jar powernukkitx-1.6.0.0-PNX-SNAPSHOT-shaded.jar

完美解决

查看报错内容中如下部分:

module A does not "opens B" to unnamed module @C

在启动命令-jar前加上--add-opens A/B=ALL-UNNAMED(A/B中的内容为相关模块名称,可看以下示例)即可,每个不同报错都要这么做

示例:

如果报错内容为:module java.base does not "opens java.lang" to unnamed module @?????? 那参数配置则为

--add-opens java.base/java.lang=ALL-UNNAMED

java.lang.UnsupportedClassVersionError

请更换java到java17,下载链接

登陆服务器提示“无法连接:过期的服务器!”

这种情况发生有两种可能性
一:服务端协议更新导致服务器过期,等待服务端更新协议
二:本机电脑的世界与服务端时间相差过大导致无法进入服务器,解决办法为同步本地时间或者在server.properties中设置check-login-time=off

端口地址占用报错解决方案

端口地址冲突报错:

ERROR - Throwing java.util.concurrent.CompletionException: java.net.BindException: Address already in use: bind

解决方案

Windows解决方案:

win+R键打开运行窗口,窗口中输入cmd打开Windows系统自带的命令窗口

netstat -ano|findstr 19132

输入以上指令查询端口是否被占用,数字19132代表端口 例:

C:\Users\Administrator>netstat -ano|findstr 19132
  UDP    0.0.0.0:19132          *:*                                    12228

查找到对应的端口后有对应的UDP号12228 在Windows命令窗口中输入,即可解除19132的端口占用

taskkill /f /t /im 12228

Linux解决方案

在命令框里输入以下命令

netstat -tln | grep 19132

查看到对应的系统Pid号使用以下指令结束进程

kill -9 进程PID

java.lang.NoClassDefFoundError

如果使用的是pnx-cli,请使用以下命令更新依赖库

pnx libs update

如果使用的是shaded版本核心,请在action中下载更新最新核心.

java.lang.RuntimeException

如果报错内容中带有

java.io.IOException: Unable to acquire lock on '......players/LOCK'

说明你在同一个路径上同时开启了不少于两个相同的PNX程序,请关闭先前启动的那个。
如果您甚至不知道如何进行上述操作,请重启您的服务器来解决此问题并系统学习如何正确使用您的操作系统。

玩家集体掉线

这可能是由以下原因造成的:

请您先自查以上原因,如果您实在无法解决,可以到QQ群或Discord服务器寻求帮助。

DOS error/errno=1455

页面文件太小,无法完成操作
DOS error/errno=1455

这是JVM向操作系统申请内存的时候,操作系统给不出更多内存的报错。
PNX-CLI启动时默认配置可用内存会稍微小于当时的最大可用物理内存空间,如果超出的话会进行GC并抛出JVM内部错误而非向操作系统申请更多内存。 只有最大可用物理内存空间数据与实际上真实的内存大小不符时才会出现这种情况。 如果机子内存过小,或者使用某些保留空间过大的核显(常见与笔记本电脑),会导致硬件保留内存比例过大导致此问题。 超开的机子也会导致此问题。

可以通过以下方式尝试解决此问题:

如何让PNX在关服后不自动重启

关服后等待10秒自动重启是PNX-CLI的默认功能,您可以在启动命令后面加上 start来关闭此功能。

例如:

# 如果您使用exe文件在Windows上运行
.\pnx start
# 如果您使用elf文件在Linux上运行
./pnx start
# 如果您使用jar版本启动器
java -jar PNX-CLI.jar start

© PowerNukkitX 开发组