【问题标题】:J-Monkey subclassJ-Monkey 子类
【发布时间】:2013-11-09 03:50:44
【问题描述】:

我是 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 java.util.prefs.WindowsPreferences 警告:无法在根 0x80000002 打开/创建首选项根节点 Software\JavaSoft\Prefs。 Windows RegCreateKeyEx(...) 返回错误代码 5。 2013 年 11 月 9 日上午 11:29:49 com.jme3.system.JmeDesktopSystem 初始化 信息:在 jMonkeyEngine 3.0.0 Beta 上运行 2013 年 11 月 9 日上午 11:29:49 com.jme3.system.Natives extractNativeLibs 信息:提取目录:C:\Users\Zero\Documents\Basic_Test_menu 2013 年 11 月 9 日上午 11:29:49 com.jme3.system.lwjgl.LwjglAbstractDisplay 运行 信息:使用 LWJGL 2.8.4 2013 年 11 月 9 日上午 11:29:49 com.jme3.system.lwjgl.LwjglDisplay createContext 信息:选择的显示模式:800 x 600 x 0 @0Hz 2013 年 11 月 9 日上午 11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:适配器:igdumd64 2013 年 11 月 9 日上午 11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:驱动程序版本:空 2013 年 11 月 9 日上午 11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:供应商:英特尔 2013 年 11 月 9 日上午 11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:OpenGL 版本:3.1.0 - Build 9.17.10.2932 2013 年 11 月 9 日上午 11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:渲染器:Intel(R) HD Graphics 2013 年 11 月 9 日上午 11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:GLSL 版本:1.40 - 英特尔内部版本 9.17.10.2932 2013 年 11 月 9 日上午 11:29:50 com.jme3.system.lwjgl.LwjglTimer 信息:计时器分辨率:每秒 1,000 个滴答声 2013 年 11 月 9 日上午 11:29:50 com.jme3.renderer.lwjgl.LwjglRenderer 初始化 信息:大写:[FrameBuffer、FrameBufferMRT、FrameBufferMultisample、OpenGL20、OpenGL21、OpenGL30、OpenGL31、ARBprogram、GLSL100、GLSL110、GLSL120、GLSL130、GLSL140、VertexTextureFetch、TextureArray、FloatTexture、FloatColorBuffer、FloatDepthBuffer、PackedFloatTexture、MeshInExponentTexture、PackedFloatColor , VertexBufferArray, Multisample, PackedDepthStencilBuffer] 2013 年 11 月 9 日上午 11:29:50 com.jme3.asset.AssetConfig loadText 警告:找不到加载程序 com.jme3.scene.plugins.blender.BlenderModelLoader 2013 年 11 月 9 日上午 11:29:50 com.jme3.asset.DesktopAssetManager 信息:已创建 DesktopAssetManager。 2013 年 11 月 9 日上午 11:29:50 com.jme3.renderer.Camera 信息:已创建相机(W:800,H:600) 2013 年 11 月 9 日上午 11:29:50 com.jme3.renderer.Camera 信息:已创建相机(W:800,H:600) 2013 年 11 月 9 日上午 11:29:50 com.jme3.input.lwjgl.LwjglMouseInput 初始化 信息:鼠标已创建。 2013 年 11 月 9 日上午 11:29:50 com.jme3.input.lwjgl.LwjglKeyInput 初始化 信息:已创建键盘。 2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 信息:AudioRenderer 支持 64 通道 2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread INFO:音效扩展版本:1.0 2013 年 11 月 9 日上午 11:29:51 com.jme3.audio.lwjgl.LwjglAudioRenderer initInThread 信息:音频最大辅助发送:4 2013 年 11 月 9 日上午 11:29:51 com.jme3.material.MaterialDef 信息:加载的材料定义:无阴影 2013 年 11 月 9 日上午 11:29:51 com.jme3.scene.Node attachChild INFO: 附加到此节点的子 (BitmapFont) (null) 2013 年 11 月 9 日 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.

【问题讨论】:

  • 请发布您的异常堆栈跟踪。
  • 你的意思是错误吗?我没有任何未使用的 Import 和一些变量?
  • 不,我不是说编译错误。我的意思是异常堆栈跟踪。你应该谷歌“什么是异常堆栈跟踪?”
  • 好的,我编辑帖子并放上踪迹,呵呵,我学到了新东西,谢谢
  • Logo.java的第17行是哪一行?

标签: java nullpointerexception jmonkeyengine


【解决方案1】:

问题是assetManager 在那个时间点为空。要么分配得太晚,要么根本忘记分配。

【讨论】:

  • 所以你是说我不能在 logo.java 中声明一个变量或者我可能把代码放在错误的方法中?
  • 不!我是说assetmanager 是空的。让它不为空!给它一个价值!你明白 null 是什么意思吗?
  • 顺便说一下,在 C++ 中,声明一个变量会创建一个对象。在 Java 中,这是不正确的。如果您来自 C++,这可能是您困惑的根源。
  • 哈哈,你是对的,我使用过 c++ 和 c#,所以我是 java xD 中的新手,你告诉我它是空的,因为 logo.java 永远不会启动,为什么它会变为空,所以我把 logo.start ();它可以工作,但是它从 flyCam 重置了我的摄像头设置,并且调试再次打开,所以它会很难 xD
猜你喜欢
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 2017-05-24
  • 2011-12-15
  • 2011-08-08
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多