Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java J-猴亚类_Java_Nullpointerexception_Jmonkeyengine - Fatal编程技术网

Java J-猴亚类

Java J-猴亚类,java,nullpointerexception,jmonkeyengine,Java,Nullpointerexception,Jmonkeyengine,我是java和J-monkey的新手,我正在尝试制作一个java游戏,所以对于菜单,我制作了一个枚举,这样我可以在我的任何状态之间切换,但是我想让主文件更短,这样它就可以轻松读取,所以我正在制作子类。问题是,当运行游戏时,它会给我一个错误,说“线程中抛出了未捕获的异常”[LWJGL Renderer Thread,5,main]NullPointerException“我认为这个问题一定是管道的问题,这是我的主文件的代码: package mygame; import com.jme3.app

我是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)
    {

    }

}
}
下面是我的徽标子类:

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 警告:无法在根0x8000002处打开/创建prefs根节点Software\JavaSoft\prefs。Windows RegCreateKeyEx(…)返回错误代码5。 2013年11月9日上午11:29:49 com.jme3.system.JmeDesktopSystem初始化 信息:在jMonkeyEngine 3.0.0测试版上运行 2013年11月9日上午11:29:49 com.jme3.system.Natives extractNativeLibs 信息:提取目录:C:\Users\Zero\Documents\Basic\u Test\u菜单 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 信息:所选显示模式:800x600x0@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 信息:驱动程序版本:null 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-构建9.17.10.2932 2013年11月9日上午11:29:50 com.jme3.system.lwjgl.LwjglContext printContextInitInfo 信息:渲染器:英特尔(R)高清图形 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.lwjglimer 信息:计时器分辨率:每秒1000次 2013年11月9日上午11:29:50 com.jme3.renderer.lwjgl.LwjglRenderer初始化 信息:Caps:[FrameBuffer,FrameBufferMRT,FrameBufferMultisample,OpenGL20,OpenGL21,OpenGL30,OpenGL31,ARBprogram,GLSL100,GLSL110,GLSL120,GLSL130,GLSL140,VertextTextureFetch,TextureArray,FloatTexture,FloatColorBuffer,FloatDepthBuffer,PackedFloatTexture,SharedComponentTexture,PackedFloatColorBuffer,NonPowerFoatColorBuffer,MeshInstance,VertexBufferArray,多样本,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 信息:已创建摄像头(宽:800,高:600) 2013年11月9日上午11:29:50 com.jme3.renderer.Camera 信息:已创建摄像头(宽:800,高:600) 2013年11月9日上午11:29:50 com.jme3.input.lwjgl.LwjglMouseInput初始化 信息:鼠标已创建。 2013年11月9日上午11:29:50 com.jme3.input.lwjgl.lwjglkeyinport初始化 信息:键盘已创建。 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 信息:音频效果扩展版本: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附件 信息:附加到此节点的子项(位图字体)(空) 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.


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

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

请发布异常堆栈跟踪。你是说错误吗没有什么,只是一些未使用的导入和一些变量吗?不,我不是指编译错误。我是指异常堆栈跟踪。你应该谷歌“什么是异常堆栈跟踪?”好的,我编辑了帖子并放了跟踪,呵呵,我学到了一些新的东西,谢谢,哪一行是Logo.java的第17行?请发布你的异常堆栈跟踪。你是说错误吗?我没有,只是一些未使用的导入和一些变量?不,我不是指编译错误。我是指异常堆栈跟踪。你应该用谷歌搜索“什么是异常堆栈跟踪?"好的,我编辑了帖子,放了跟踪,呵呵,我学到了一些新的东西,谢谢,哪一行是Logo.java的第17行?那么你是在对assetmanager说,我可能不会在Logo.java中声明变量,或者我可能会将代码放在错误的方法中?不!我是说assetmanager为null。让它不为null!给它一个值!你明白是什么吗在C++中,声明变量创建一个对象。在爪哇,这不是真的。如果你来自C++,这可能是你混淆的根源。哈哈,你是对的。我使用C++和C语言,所以我在Java XD中是新的。你告诉我它真正的WASS空,因为LOGO。java从来没有启动它为什么会空,所以我放Logo。;它可以工作,但它会从flyCam重置我的cams设置,并再次打开调试,因此这将很困难。因此,您是说assetmanager,我可能不会在logo.java中声明变量,或者我可能会将代码放在错误的方法中?不!我是说assetmanager为null。使其不为null!给它一个值!您明白吗平均数