В моем слегка измененном учебном пособии по jMonkey каким-то образом возникает проблема с указателем NULL?

Хорошо, вот мой код:

package test;


import java.util.ArrayList;
import java.util.Vector;

import com.jme3.app.SimpleApplication;
import com.jme3.system.AppSettings;


import com.jme3.material.Material;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;
import com.jme3.math.ColorRGBA;
import com.jme3.scene.Node;


public class test extends SimpleApplication {


    public static void main(String[] args){

        AppSettings settings = new AppSettings(false);
        settings.setResolution(640,480);
        test app = new test();

        app.setSettings(settings);
        app.start();

    }


    @Override
    public void simpleInitApp() {

        ArrayList<Geometry> geos = new ArrayList<Geometry>();

        for ( int count = 0; count <= 5; count++ ) {

            double x = 10;
            double y = 10;
            double z = 10;

            Box      box = new Box( new Vector3f(count*10,count*10,count*10), (int)x, (int)y, (int)z );
            Geometry geo = new Geometry( "Box", box );
            Material mat = new Material( assetManager, "Common/MatDefs/Misc/Unshaded.j3md");

            mat.setColor( "Color", ColorRGBA.Blue );
            geo.setMaterial(mat);

            geos.add( geo );

        }

        /** Create a pivot node at (0,0,0) and attach it to the root node */
        Node pivot = new Node("pivot");
        rootNode.attachChild(pivot); // put this node in the scene

        /** Attach the two boxes to the *pivot* node. */
        for( Geometry g : geos ) {
            pivot.attachChild( g );
        }

        /** Rotate the pivot node: Note that both boxes have rotated! */
        pivot.rotate(.4f,.4f,0f);

    }




}

Это ошибка в команде app.start(), указывающая, что это исключение указателя NULL. Как приложение может быть нулевым указателем, если строка перед ним не содержит ошибок? Я теряюсь в том, что не так.

ИСТОРИЯ: Мне нужно иметь возможность создавать 3D-рендеринг для моей работы с простыми коробками. Мне нужно загрузить элементы модели из другой процедуры, а затем прокрутить их и нарисовать. Я использую jMonkey, потому что они изначально хотели Xj3D, но я не мог найти, как его запустить. По крайней мере, я могу заставить учебник работать, но когда я изменил его, чтобы зациклить и создать несколько блоков, теперь я получаю проблемы с нулевым указателем.

Заранее спасибо! ДХ

РЕДАКТИРОВАТЬ:

Вот вывод консоли:

Exception in thread "main" java.lang.NullPointerException
    at com.jme3.system.JmeDesktopSystem.showSettingsDialog(JmeDesktopSystem.java:73)
    at com.jme3.system.JmeSystem.showSettingsDialog(JmeSystem.java:108)
    at com.jme3.app.SimpleApplication.start(SimpleApplication.java:127)
    at test.test.main(test.java:34)

person Patrick Aquilone    schedule 06.06.2012    source источник
comment
Какова ваша трассировка стека? Возможно, для чего-то установлено значение null и оно вызывается только при запуске приложения, поэтому вы увидите его в этой строке, а не само приложение имеет значение null.   -  person n00begon    schedule 06.06.2012
comment
Это то, что вы имели в виду под трассировкой стека? Если нет, то как мне его получить?   -  person Patrick Aquilone    schedule 06.06.2012
comment
Таким образом, похоже, что фактический нулевой указатель находится на JmeDesktopSystem.showSettingsDialog. Учебник, который вы изменили, работал? Если да, то удалили ли вы строчку о диалоге настроек?   -  person n00begon    schedule 06.06.2012
comment
Это сработало. Что я изменил, так это добавил цикл for и материал AppSettings. Теперь я сначала добавил материал AppSettings, и это сработало. Затем, когда я добавил цикл for, он умер. Итак, я, должно быть, каким-то образом сделал что-то еще, когда добавлял цикл for.   -  person Patrick Aquilone    schedule 06.06.2012
comment
Хорошо, я изменил настройки AppSettings = new AppSettings(false); в настройки AppSettings = новые AppSettings (true); и это работает. Предполагается, что false не отображает диалоговое окно заставки, или я так думал.   -  person Patrick Aquilone    schedule 06.06.2012


Ответы (2)


Хорошо, меняю

AppSettings settings = new AppSettings(false);

to

AppSettings settings = new AppSettings(true);

исправил мою проблему. Теперь, чтобы выяснить, почему false не сработало.

person Patrick Aquilone    schedule 06.06.2012
comment
вы когда-нибудь видели эту страницу?: hub.jmonkeyengine.org/javadoc и, может быть, даже эту? : code.google.com/p/jmonkeyengine/source/browse/trunk/engine/src/ не забывайте, у вас есть мощь Java с открытым исходным кодом! - person noncom; 13.08.2013

False не загружает настройки по умолчанию, то есть вы должны установить их все вручную. Это, вероятно, причина для NPE. Чтобы скрыть диалог настроек, используйте

app.setShowSettings(false);
person Zoltán    schedule 27.06.2012