Я пытаюсь запустить сервер LibGDX. Я скопировал код с этого сайта: https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/net/PingPongSocketExample.java, но я получаю исключение нулевого указателя из строки Server server = Gdx.net.newServerSocket ... Что происходит?LibGDX: newServerSocket вызывает исключение нулевого указателя
ответ
Статические переменные утилиты LibGDX, как и почти любые переменные Java, начинаются с null
. Они не назначаются сразу (и не являются окончательными) для поддержки различных реализаций на каждой платформе. Например, реализация Net
, которую вы указываете с помощью Gdx.net
, составляет null
, если вы не запускаете приложение, которое фактически присваивает это значение.
Если вы хотите, чтобы сервер был частью вашего обычного клиентского приложения, сначала попробуйте запустить приложение и , затем, создавая серверный сокет. Если вы хотите использовать отдельное серверное приложение, попробуйте headless
бэкэнд. Вы также можете создать экземпляр Net
вручную, например: new HeadlessNet().newServerSocket(...)
или new AndroidNet().newServerSocket(...)
.
Net
Реализации в основном простые фабрики без гражданства на большинстве платформ, поэтому все в порядке, чтобы иметь несколько примеров из них; даже если вы создаете экземпляр Net
вручную и , то создайте приложение, это не вызовет проблем.
Спасибо, это имеет смысл! Однако сейчас у меня другая проблема. В моем классе сервера я не могу импортировать LwjglNet. При попытке запустить Gradle говорит, что пакет com.badlogic.gdx.backends.lwjgl не существует. Однако, если я попытаюсь импортировать его в другой класс, он отлично работает. Я подозреваю, что есть проблема с конфигурацией сборки.? – TAsk
Возможно, вы пытаетесь импортировать этот класс в проект «core». Core имеет только, ну, основные зависимости: абстракции, используемые другими платформами. 'LwjglNet' - это класс, специфичный для настольной платформы. Основной проект просто не имеет этой зависимости - я бы предложил создать отдельный проект с помощью '' gdx-backend-headless' '(http://mvnrepository.com/artifact/com.badlogicgames.gdx/gdx-backend-headless) если вы хотите использовать серверное приложение. – JustACluelessNewbie
Существует несколько способов решения проблемы NPE, было бы полезно узнать, чего вы пытаетесь достичь. Если создание сокета сервера является частью почти любого клиентского приложения, вы можете просто подождать, пока приложение будет полностью создано, и используйте «Gdx.net» для межплатформенного API. Если вам нужен отдельный «глобальный» сервер, попробуйте использовать обезглавленные бэкэнды. – JustACluelessNewbie
- 1. fragment.onCreateView вызывает исключение нулевого указателя
- 2. Bindings.isNotNull вызывает исключение нулевого указателя
- 3. Java LibGDX Texture дает исключение нулевого указателя
- 4. Почему String.valueOf (null) вызывает исключение нулевого указателя?
- 5. Анализ SAX вызывает исключение нулевого указателя
- 6. Вызывает ли метод .containsKey() исключение нулевого указателя?
- 7. Исключение нулевого указателя/Массивы
- 8. KSOAP нулевого указателя исключение
- 9. Исключение нулевого указателя JLabel
- 10. SeekBar исключение нулевого указателя
- 11. Исключение нулевого указателя TabLayout
- 12. setBackground нулевого указателя исключение
- 13. Исключение нулевого указателя
- 14. Получение Исключение нулевого указателя
- 15. SharedPreferences Исключение нулевого указателя
- 16. Найти Исключение нулевого указателя
- 17. ошибок Исключение нулевого указателя
- 18. Gettext() Исключение нулевого указателя
- 19. Исключение нулевого указателя Calendar.setTime
- 20. Исключение нулевого указателя Exception
- 21. Hadoop Исключение нулевого указателя
- 22. Исключение нулевого указателя
- 23. Исключение нулевого указателя @ StopService()
- 24. Получение нулевого указателя Исключение ..?
- 25. JSON: Исключение нулевого указателя
- 26. Исключение нулевого указателя
- 27. Исключение нулевого указателя
- 28. Исключение нулевого указателя DrawerLayout
- 29. Исключение нулевого указателя
- 30. Исключение нулевого указателя GetGraphics()
Можете ли вы опубликовать точное исключение и версию LibGDX? 'AndroidNet' никогда не возвращает null из метода, который вы опубликовали. Вы уверены, что вы вызываете его после того, как приложение уже запущено? – JustACluelessNewbie
А, есть проблема, я вообще не запускаю приложение ...: P имеет смысл. – TAsk
'Gdx.net' является нулевым, если вы не запускаете приложение - если вы просто хотите использовать сетевые функции, попробуйте создать объект реализации« Net »вручную, например:' new LwjglNet(). NewServerSocket (...) '. – JustACluelessNewbie