hello world. So I am peaceful with my screencontroller done. Until it start stating this
[java]
SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]
java.lang.NoClassDefFoundError: IllegalName: controllers/EditingGUI
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:646)
at java.lang.ClassLoader.defineClass(ClassLoader.java:785)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at de.lessvoid.xml.tools.ClassHelper.getInstance(ClassHelper.java:46)
at de.lessvoid.nifty.loaderv2.types.ScreenType.resolveScreenController(ScreenType.java:98)
at de.lessvoid.nifty.loaderv2.types.ScreenType.create(ScreenType.java:42)
at de.lessvoid.nifty.loaderv2.types.NiftyType.create(NiftyType.java:137)
at de.lessvoid.nifty.Nifty.loadFromFile(Nifty.java:528)
at de.lessvoid.nifty.Nifty.fromXml(Nifty.java:413)
at controllers.EditingGUI.share(EditingGUI.java:102)
at prototypes.testEdit.simpleInitApp(testEdit.java:110)
at com.jme3.app.SimpleApplication.initialize(SimpleApplication.java:228)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.initInThread(LwjglAbstractDisplay.java:129)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:205)
at java.lang.Thread.run(Thread.java:722)
[/java]
happens when i put the
[xml]
<screen … controller = "controllers/EditingGUI" />
[/xml]
I believe it should run with the implements ScreenController, Controller. Double checked if it was the controller misspelled or inverted slashes in path but no… Could i please get info on what happened here and how to do this?
thanks
Next lies my codes
the line 102 of EditingGUI was in here
[java]
public void share(AssetManager am, InputManager im, AudioRenderer ar, ViewPort guiViewPort ) {
assetManager = am;
niftyDisplay = new NiftyJmeDisplay(am,im,ar,guiViewPort);
editNifty = niftyDisplay.getNifty();
editNifty.loadStyleFile("nifty-default-styles.xml");
editNifty.loadControlFile("nifty-default-controls.xml");
guiViewPort.addProcessor(niftyDisplay);
// editNifty.addXml("Interface/Debug.xml");
// editNifty.fromXmlWithoutStartScreen("Interface/Debug.xml");
editNifty.fromXml("Interface/Debug.xml", "main"); // <<here
npcs = new Node("NPCs");
objs = new Node("Objects");
prts = new Node("Particles");
}
[/java]
xml
[xml]
<?xml version="1.0" encoding="UTF-8"?>
<nifty xmlns="http://nifty-gui.sourceforge.net/nifty-1.3.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://nifty-gui.sourceforge.net/nifty-1.3.xsd http://nifty-gui.sourceforge.net/nifty-1.3.xsd">
<useStyles filename="nifty-default-styles.xml" />
<useControls filename="nifty-default-controls.xml" />
<screen id="main" controller = "controllers/EditingGUI" >
<layer childLayout="center" backgroundColor="#0000" >
<text text= "}-O-{" style = "base-font" color= "#a33f" />
<control name="console" id="terminal" lines="25" valign="bottom" />
</layer>
<layer childLayout="horizontal">
<panel childLayout="vertical" backgroundColor="#888a" valign="center" height="60%" width="17%" padding="3%" >
<control name="label" text="Trigger Number:" />
<control name="textfield" maxLength="2" id="trig-name" visibleToMouse="true" />
<control name="label" text="Radius:" />
<control name="horizontalSlider" id="trig-radius" visibleToMouse="true" />
<control name="label" text="Tag:" />
<control name="textfield" maxLength="20" id="trig-tag" visibleToMouse="true" />
<control name="label" text="Health:" />
<control name="checkbox" id="trig-chkHealth" visibleToMouse="true" />
<control name="horizontalSlider" id="trig-health" visibleToMouse="true" enabled="false" />
</panel>
<panel id="panel_add" align="center" width="*" />
<panel childLayout="vertical" style="nifty-panel" valign="center" height="30%" width="16%" padding="10%">
<control name="button" label="SkyBox" id="skybox" visibleToMouse="true" >
<effect><onClick name="show" targetElement="skies" /></effect>
</control>
<control name="button" label="NPC" id="npc" visibleToMouse="true"> <!-- controller = "controllers/EditingGUI" -->
<!-- <interact onClick="addNPC()"/> -->
<effect><onClick name="show" targetElement="npc" /></effect>
</control>
<control name="button" label="Object" id="object" visibleToMouse="true" >
<!–<interact onClick="addObject()"/>–>
<effect><onClick name="show" targetElement="objects" /></effect>
</control>
<control name="button" label="Particle" id="particle" visibleToMouse="true" >
<!–<interact onClick="addParticle()"/>–>
<effect><onClick name="show" targetElement="particles" /></effect>
</control>
<control name="button" label="Save" id="save" visibleToMouse="true" >
<interact onClick="saveMap()"/>
</control>
</panel>
</layer>
<layer childLayout="center">
<effect><onStartScreen name="hide" targetElement="skies" /></effect>
<panel id="npc" style="nifty-panel" childLayout="vertical" width="35%" heigth="15%">
<panel childLayout="horizontal">
<control name= "label" text="Name:"/>
<control name= "textfield" id="npc-name" />
</panel>
<panel childLayout="horizontal">
<control name= "label" text="Model:"/>
<control name= "textfield" id="npc-model" />
</panel>
<panel childLayout="horizontal">
<control name= "label" text="Rotate:"/>
<control name= "horizontalSlider" id="npc-rotate" min="0f" max="3.6f" stepSize="0.05" buttonStepSize="0.1" />
</panel>
<control name="button" label="make" align="center">
<interact onClick = "addNPC()" />
</control>
<control name="button" label="Close" align="center">
<effect><onClick name="hide" targetElement="npc" /></effect>
</control>
</panel>
<panel id="objects" style="nifty-panel" childLayout="vertical" width="35%" heigth="15%">
<control name="button" label="Close" align="center">
<effect><onClick name="hide" targetElement="objects" /></effect>
</control>
</panel>
<panel id="particles" style="nifty-panel" childLayout="vertical" width="35%" heigth="15%">
<control name="button" label="Close" align="center">
<effect><onClick name="hide" targetElement="particles" /></effect>
</control>
</panel>
</layer>
</screen>
</nifty>
[/xml]
What package is your controller in?
in controllers package… The testEdit as well in its correct package. I used the refactor wizard several times lately.
You should use a correct package name. That was the first thing that struck me as odd though so if you are specifying the controller class correctly I don’t know what the problem is.
Do you have a no-arguments constructor on the controller? Have you tried instantiating the controller yourself and passing it to fromXml?
abt the no-arguments constructor, I think that would be a popup builder present there.
@zarch good heavens Gracias! Just did the instantiating. I got it running. But i wonder… did the code really changed? Anyway it’s working. Thanks much!
[java]
editNifty.fromXml(“Interface/Debug.xml”, “blank”, this); //<<here
//before changing editNifty.addScreen(“main”); in EditGUI.show();
[/java]
[java]
SEVERE: Uncaught exception thrown in Thread[LWJGL Renderer Thread,5,main]
java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:432)
at de.lessvoid.nifty.Nifty.addScreen(Nifty.java:1102)
at controllers.EditingGUI.show(EditingGUI.java:112)
at prototypes.testEdit.onAction(testEdit.java:272)
at com.jme3.input.InputManager.invokeActions(InputManager.java:168)
at com.jme3.input.InputManager.onKeyEventQueued(InputManager.java:425)
at com.jme3.input.InputManager.processQueue(InputManager.java:799)
at com.jme3.input.InputManager.update(InputManager.java:851)
at com.jme3.app.Application.update(Application.java:598)
at com.jme3.app.SimpleApplication.update(SimpleApplication.java:233)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(LwjglAbstractDisplay.java:149)
at com.jme3.system.lwjgl.LwjglDisplay.runLoop(LwjglDisplay.java:182)
at com.jme3.system.lwjgl.LwjglAbstractDisplay.run(LwjglAbstractDisplay.java:223)
at java.lang.Thread.run(Thread.java:722)
[/java]
changed line after and done…
The package name in for
[java]
<screen … controller = "controllers/EditingGUI" />
[/java]
should be a java package name, eg:
[java]
<screen … controller = "controllers.EditingGUI" />
[/java]
I think so anyway…