我既不是 Linux 专家也不是 Java 专家,但我正在 Ubuntu 16.04 上设置 Minecraft 服务器。系统有 8GB RAM。
我遵循了设置服务器的所有说明(非常简单),但是当我运行命令时:
sudo java –Xms1024M -Xmx1024M -jar minecraft_server.1.9.2.jar nogui
我懂了:
Error: Could not find or load main class –Xms1024M
然后我简单地运行(经过大约 1 小时的尝试安装不同的 JRE):sudo java -jar minecraft_server.1.9.2.jar nogui
并且它成功了。
不指定 RAM 有什么区别以及可能出现哪些问题?
此外,通过 SSH 启动 Minecraft 服务器并断开连接后让它在后台运行的良好做法是什么?
编辑:
运行时java -jar minecraft_server.1.9.2.jar nogui
我看到以下输出:
2016-05-08 14:30:35,683 ERROR Cannot access RandomAccessFile {}) java.io.FileNotFoundException: logs/latest.log (Permission denied)
2016-05-08 14:30:35,684 ERROR Unable to invoke method createAppender in class org.apache.logging.log4j.core.appender.RollingRandomAccessFileAppender for element RollingRandomAccessFile java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
接下来是无尽的列表:
at kx.a(SourceFile:44) [minecraft_server.1.9.2.jar:?]
at kx.b(SourceFile:54) [minecraft_server.1.9.2.jar:?]
at kx.a(SourceFile:44) [minecraft_server.1.9.2.jar:?]
at kx.b(SourceFile:54) [minecraft_server.1.9.2.jar:?]
at kx.a(SourceFile:44) [minecraft_server.1.9.2.jar:?]
at kx.b(SourceFile:54) [minecraft_server.1.9.2.jar:?]
at kx.a(SourceFile:44) [minecraft_server.1.9.2.jar:?]
at kx.b(SourceFile:54) [minecraft_server.1.9.2.jar:?]
at kx.a(SourceFile:44) [minecraft_server.1.9.2.jar:?]
at kx.b(SourceFile:54) [minecraft_server.1.9.2.jar:?]
答案1
注意大小写!
应该m
是小写的,如下所示:
sudo java -Xms1024m -Xmx1024m -jar minecraft_server.1.9.2.jar nogui
另外,尝试将内存选项放在最后。
答案2
指定 RAM
不指定 RAM 的问题很简单,您的 Minecraft 服务器将没有足够的 RAM 为其保留,从而导致其崩溃。您是否尝试过将 RAM 命令放在末尾,如下所示:
java -jar minecraft_server.jar -Xmx8192M
确保将 RAM 调整到您的极限。另外请注意,您无需-Xms
在参数中指定。请确保不要使用sudo
,因为这会给系统带来危害。
在后台使用 Minecraft
您可以通过多种方式在后台运行 Minecraft。我在下面列出了一些示例。
方法 1:screen
您可以使用名为 的实用工具在后台运行 Minecraft 会话screen
。只需运行screen
命令,然后运行启动命令即可。之后,只需按Ctrl+ ,A然后按D。您将返回到终端。要恢复会话screen
,只需运行screen -r
。
大多数人更喜欢它screen
,因为您可以随时返回并访问控制台。
方法 2:bg
/fg
Minecraft 服务器启动后,按下键盘上的Ctrl+ Z。然后输入bg
。Minecraft 服务器将在后台运行。
请注意,我尚未亲自测试过,因此 YMMV。
方法 3:nohup
在启动命令前添加该nohup
命令。Minecraft 服务器启动后,只需关闭 SSH 会话即可。服务器将继续运行。
但使用时要小心nohup
,因为它会占用大量硬盘空间来保存自己的日志。您可以通过将其附加>/dev/null 2>&1
到命令末尾来避免这种情况。
方法 4:启动脚本
启动脚本是非常虽然很复杂,但它可以让你的服务器在启动或手动调用时自动启动/停止。说明可在线获取。有很多好的方法,但它们需要针对你的系统进行量身定制。
权限错误
您的权限问题是因为 Minecraft 以 root 身份创建了所有文件。因此只有 root 可以访问它们。通过sudo chown -R $USER:$USER .
在 Minecraft 文件夹中运行来解决这个问题。
来源:Minecraft 网络的系统管理员
答案3
连字符–
代替减号-
下列的评论的@甜点,似乎您使用了连字符–
(U+02010) 而不是减号-
(U+02212)。 两者都是不同的字符,并且 Java 在使用 调用时不会转义–
。 这就是它将解释为参数 (文件/类名) 的原因–Xms1024M
,即使您打算将其作为选项。
sudo java -Xms1024M -Xmx1024M -jar minecraft_server.1.9.2.jar nogui
Java 允许同时使用m
和M
作为内存参数。您提供给服务器的 RAM 数量足以运行它。如果不是(或者您通过非常快速地生成块来使用全部 RAM),Java 会抛出堆错误。
希望这对未来的读者有所帮助。