Screencontroller been odd lately

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… :slight_smile:

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…

@lachlanap is right. Use dots as a separator, not slashes.