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 вместо этого выдала бы ошибку кучи.
Надеюсь, это поможет будущим читателям.