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