ClassNotFoundException в главе 3 статьи «Разработка игр для Java с помощью LibGdx» (Ли Стемкоски)

Исходный код простой игры, представленной в главе 3, можно найти здесь.

При запуске выдает ошибку:

java.lang.ClassNotFoundException: Rock
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at com.mygdx.game.BaseActor.getList(BaseActor.java:565)
    at com.mygdx.game.LevelScreen.update(LevelScreen.java:36)
    at com.mygdx.game.BaseScreen.render(BaseScreen.java:37)
    at com.badlogic.gdx.Game.render(Game.java:46)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126
Exception in thread "LWJGL Application" java.lang.NullPointerException
    at com.mygdx.game.BaseActor.getList(BaseActor.java:571)
    at com.mygdx.game.LevelScreen.update(LevelScreen.java:36)
    at com.mygdx.game.BaseScreen.render(BaseScreen.java:37)
    at com.badlogic.gdx.Game.render(Game.java:46)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126)

Process finished with exit code 0

Проблема в этом методе класса Base Actor:

public static ArrayList<BaseActor> getList(Stage stage, String className)
{
    ArrayList<BaseActor> list = new ArrayList<BaseActor>();

    Class theClass = null;
    try
    {  theClass = Class.forName(className);  }
    catch (Exception error)
    {  error.printStackTrace();  }

    for (Actor a : stage.getActors())
    {
        if ( theClass.isInstance( a ) )
            list.add( (BaseActor)a );
    }

    return list;
}

В Rock есть несколько объектов Stage, но каким-то образом этот метод не может их получить. Буду признателен за любую помощь с этим. Спасибо!

Параметр className содержит имя пакета вроде libgdx.cp3.Rock, где вы используете этот метод ??

Abdullah Tellioglu 18.06.2018 23:31

Ваша функция getList часто вызывается для разных типов актеров? Я имею в виду, не было бы проще создать ArrayList<Rock> для этого класса и добавить к нему каждый Rock после того, как он был создан?

Xander 19.06.2018 09:57

@ Абдулла Теллиоглу Я не уверен, что правильно понял. Этот метод используется для получения объектов Rock от mainStage, а затем другой метод проверяет наличие конфликтов с ними.

user9958765 19.06.2018 12:10

@Xander Это исходный код, представленный в этой главе. Позже в книге этот метод используется для разных актеров.

user9958765 19.06.2018 12:11

Кто-нибудь может с этим помочь?

user9958765 19.06.2018 20:55
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
5
187
0

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