连字符–代替减号-

连字符–代替减号-

我既不是 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 允许同时使用mM作为内存参数。您提供给服务器的 RAM 数量足以运行它。如果不是(或者您通过非常快速地生成块来使用全部 RAM),Java 会抛出堆错误。

希望这对未来的读者有所帮助。

相关内容