1

私はJavaとJ-monkeyが初めてで、Javaゲームを作成しようとしているので、メニュー用に列挙型を作成したので、状態を切り替えることができますが、メインファイルを短くして、それができるようにしたいです読みやすくするためにサブクラスを作成しています問題は、ゲームを実行すると、「スレッド[LWJGL Renderer Thread、5、main] NullPointerExceptionでスローされたキャッチされていない例外」というエラーが表示されることです。この問題は何かに違いないと思いますパイプラインについて これが私のメインファイルのコードです:

package mygame;

import com.jme3.app.SimpleApplication;
import com.jme3.font.BitmapText;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Spatial;
import com.jme3.scene.Geometry;

import com.jme3.input.*;
import com.jme3.input.controls.*;

public class Main extends SimpleApplication {

//GameStates
enum GameState{Logo, Menu, Playing, Option};
GameState gameState = GameState.Logo;

//Class Variables
Logo logo;


public Main() {

logo = new Logo();

}

public static void main(String[] args) {
    Main app = new Main();
    app.start();
}

public static void logo(String[] args) {
    Logo app = new Logo();
    app.start();
}

@Override
public void simpleInitApp() {
    //Load
    flyCam.setMoveSpeed(20);
    if(gameState == GameState.Logo){
        logo.simpleInitApp();
    }
}

@Override
public void simpleUpdate(float tpf) {

}

@Override
public void simpleRender(RenderManager rm) {
    //TODO: add render code
    //Load
    if(gameState == GameState.Logo)
    {

    }

}
}

そして、ここに私の Logo サブクラスがあります:

package mygame;

    import com.jme3.app.SimpleApplication;
    import com.jme3.renderer.RenderManager;
    import com.jme3.scene.Spatial;

    public class Logo extends SimpleApplication {

    @Override
    public void simpleInitApp() {
    Spatial Logo_Model = assetManager.loadModel("Models/Teapot/Logo.obj");
    rootNode.attachChild(Logo_Model);
    }

    public void simpleRender(RenderManager rm) {
    //Load

    }
    }

私の問題を引き起こしていると思われるスタックトレースを下に移動したので、すべての例外を読む必要はありません。下にスクロールするだけです

完全な例外スタック トレース: 2013 年 11 月 9 日 11:29:32 AM java.util.prefs.WindowsPreferences 警告: ルート 0x80000002 で設定ルート ノード Software\JavaSoft\Prefs を開く/作成できませんでした。Windows RegCreateKeyEx(...) がエラー コード 5 を返しました。 .jme3.system.Natives extractNativeLibs 情報: 抽出ディレクトリ: C:\Users\Zero\Documents\Basic_Test_menu 2013 年 11 月 9 日 11:29:49 AM com.jme3.system.lwjgl.LwjglAbstractDisplay 実行情報: LWJGL 2.8.4 Nov の使用2013 年 11 月 9 日 11:29:49 AM com.jme3.system.lwjgl.LwjglDisplay createContext 情報: 選択された表示モード: 800 x 600 x 0 @0Hz 2013 年 11 月 9 日 11:29:50 AM com.jme3.system.lwjgl. LwjglContext printContextInitInfo 情報: アダプター: igdumd64 2013 年 11 月 9 日 11: OpenGL20、OpenGL21、OpenGL30、OpenGL31、ARBprogram、GLSL100、GLSL110、GLSL120、GLSL130、GLSL140、VertexTextureFetch、TextureArray、FloatTexture、FloatColorBuffer、FloatDepthBuffer、PackedFloatTexture、SharedExponentTexture、PackedFloatColorBuffer、NonPowerOfTwoTextures、MeshInstancing、VertexStenBufferArray、NovcilDepBuffer10、9 11:29:50 AM com.jme3.asset.AssetConfig loadText 警告: ローダー com.jme3.scene.plugins.blender.BlenderModelLoader が見つかりません 2013 年 11 月 9 日 11:29:50 AM com.jme3.asset.DesktopAssetManager INFO: DesktopAssetManager作成した。2013 年 11 月 9 日 11:29:50 AM com.jme3.renderer.Camera INFO: カメラが作成されました (W: 800、H: 600) Nov 09, 2013 11:29:50 AM com.jme3.renderer.Camera INFO: Camera作成 (W: 800、H: 600) 2013/11/09 11:29:50 AM com.jme3.input.lwjgl. LwjglMouseInput 初期化情報: マウスが作成されました。2013 年 11 月 9 日 11:29:50 AM com.jme3.input.lwjgl.LwjglKeyInput 初期化情報: キーボードが作成されました。2013 年 11 月 9 日 11:29:51 AM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 情報: AudioRenderer は 64 チャンネルをサポートします拡張バージョン: 1.0 2013 年 11 月 9 日 11:29:51 AM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread INFO: オーディオ最大補助送信: 4 2013 年 11 月 9 日 11:29:51 AM com.jme3.material.MaterialDef INFO : Loaded material definition: Unshaded Nov 09, 2013 11:29:51 AM com.jme3.scene.Node attachChild INFO: Child (BitmapFont) attach to this node (null) Nov 09, 2013 11:29:51 jme3.input.lwjgl.LwjglKeyInput 初期化情報: キーボードが作成されました。2013 年 11 月 9 日 11:29:51 AM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 情報: AudioRenderer は 64 チャンネルをサポートします拡張バージョン: 1.0 2013 年 11 月 9 日 11:29:51 AM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread INFO: オーディオ最大補助送信: 4 2013 年 11 月 9 日 11:29:51 AM com.jme3.material.MaterialDef INFO : Loaded material definition: Unshaded Nov 09, 2013 11:29:51 AM com.jme3.scene.Node attachChild INFO: Child (BitmapFont) attach to this node (null) Nov 09, 2013 11:29:51 jme3.input.lwjgl.LwjglKeyInput 初期化情報: キーボードが作成されました。2013 年 11 月 9 日 11:29:51 AM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 情報: AudioRenderer は 64 チャンネルをサポートします拡張バージョン: 1.0 2013 年 11 月 9 日 11:29:51 AM com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread INFO: オーディオ最大補助送信: 4 2013 年 11 月 9 日 11:29:51 AM com.jme3.material.MaterialDef INFO : Loaded material definition: Unshaded Nov 09, 2013 11:29:51 AM com.jme3.scene.Node attachChild INFO: Child (BitmapFont) attach to this node (null) Nov 09, 2013 11:29:51

AM com.jme3.app.Application handleError SEVERE: Uncaught exception
   thrown in Thread[LWJGL Renderer Thread,5,main]

   java.lang.NullPointerException
at mygame.Logo.simpleInitApp(Logo.java:17)
at mygame.Main.simpleInitApp(Main.java:46)
at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:225)
at                com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:130)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:207)
at java.lang.Thread.run(Thread.java:722)


    Nov 09, 2013 11:29:51 AM com.jme3.renderer.lwjgl.LwjglRenderer cleanup
    INFO: Deleting objects and invalidating state
    Nov 09, 2013 11:29:51 AM com.jme3.input.lwjgl.LwjglMouseInput destroy
    INFO: Mouse destroyed.
    Nov 09, 2013 11:29:51 AM com.jme3.input.lwjgl.LwjglKeyInput destroy
    INFO: Keyboard destroyed.
    Nov 09, 2013 11:29:51 AM com.jme3.system.lwjgl.LwjglAbstractDisplay deinitInThread
    INFO: Display destroyed.
4

1 に答える 1

1

問題はassetManager、その時点で null です。割り当てが遅すぎるか、割り当てをまったく忘れています。

于 2013-11-10T08:04:26.317 に答える