Java / Minecraft "Ошибка: не удалось найти или загрузить основной класс –Xms1024M"

Я не Linux Pro и не Java Pro, но я настраиваю сервер Minecraft на Ubuntu 16.04. Система имеет 8 ГБ оперативной памяти.

Я следовал всем указаниям по настройке сервера (что очень просто), но когда я запустил команду:

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 и это сработало.

В чем разница и каковы возможные проблемы, не указывая ОЗУ?

Кроме того, что является хорошей практикой для запуска сервера Minecraft через SSH и запуска его в фоновом режиме после отключения?

Редактировать:

При беге 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:?]

3 ответа

Решение

Указание ОЗУ


Проблемы, связанные с отсутствием указания ОЗУ, заключаются в том, что на вашем сервере Minecraft недостаточно оперативной памяти, что может привести к сбою. Вы пытались поставить команды RAM в конце, например, так:

java -jar minecraft_server.jar -Xmx8192M

Обязательно настройте ОЗУ под свои пределы. Обратите внимание, что вам не нужно указывать -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: Initscripts

Initscripts очень сложен, но он позволяет вашему серверу автоматически запускаться / останавливаться при загрузке или при ручном вызове. Инструкции доступны в Интернете. Есть много хороших методов, но они должны быть адаптированы к вашей системе.


Разрешения Ошибки


Ваша проблема с правами доступа связана с тем, что Minecraft создал все свои файлы как root. Поэтому только root может получить к ним доступ. Исправьте это, запустив sudo chown -R $USER:$USER . в папке Minecraft.

Источник: Сисадмин для сети Minecraft

Обратите внимание на случай!

m должно быть в нижнем регистре, вот так:

sudo java -Xms1024m -Xmx1024m -jar minecraft_server.1.9.2.jar nogui

Кроме того, попробуйте поставить параметры памяти в конце.

Дефис вместо минуса

После комментария @dessert кажется, что вы использовали дефис (U+02010) вместо dessert-(U+02212). Оба являются разными символами, и Java не убегает при вызове с помощью. Это причина, по которой он интерпретирует–Xms1024Mв качестве аргумента (имя файла/класса), даже если вы хотели, чтобы это была опция.

      sudo java -Xms1024M -Xmx1024M -jar minecraft_server.1.9.2.jar nogui

Java позволяет использовать обаmиMдля аргументов памяти. Объема оперативной памяти, которую вы предоставляете серверу, достаточно для его запуска. Если бы это было не так (или вы используете все это, например, очень быстро генерируя фрагменты), Java вместо этого выдала бы ошибку кучи.

Надеюсь, это поможет будущим читателям.

Другие вопросы по тегам