Исходный код простой игры, представленной в главе 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, но каким-то образом этот метод не может их получить. Буду признателен за любую помощь с этим. Спасибо!
Ваша функция getList часто вызывается для разных типов актеров? Я имею в виду, не было бы проще создать ArrayList<Rock> для этого класса и добавить к нему каждый Rock после того, как он был создан?
@ Абдулла Теллиоглу Я не уверен, что правильно понял. Этот метод используется для получения объектов Rock от mainStage, а затем другой метод проверяет наличие конфликтов с ними.
@Xander Это исходный код, представленный в этой главе. Позже в книге этот метод используется для разных актеров.
Кто-нибудь может с этим помочь?




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