Editor: jMonkeyBuilder

Hello,
I noticed that when changing the name of a light, it does not register directly. I added the RenameLightOperation class that seemed to be missing

Could you change the target branch of your PR to develop branch, please?

it’s done

1 Like

It was that… simple??

I wasted So. Much. Time.

A HUGE thank you!! :wink:

2 Likes

Hello,
These are options for copying and pasting a node from the scenegraph.

Icons are not created yet

cool, I’ll look at it little later :slight_smile:

Hello,
In JMB, a NullPointerException is thrown in the RenameLightOperation class because the Light object has a Null name when it is generated.

I made a change, can you see if it fits?

Your fix adds default names to lights, it isn’t the best option in this case, I think we need to add support to work with null names of lights because some lights can be created from external systems. (blender loader or something else).
I have pushed my fix of this:

Ok :wink:

Creation of the message localization file in french (_fr)

1 Like

done, thanks :slight_smile:

Hello,

for no apparent reason, my classes controllers no longer load.
I always have the following warning:

WARNING 19:46:23:319 ClassPathScannerImpl: Can't load class: mygame\Ctrl\InterrupteurCtrl
    WARNING 19:46:23:320 ClassPathScannerImpl: java.lang.NoClassDefFoundError: mygame\Ctrl\InterrupteurCtrl (wrong name: mygame/Ctrl/InterrupteurCtrl)
    	at java.lang.ClassLoader.defineClass1(Native Method)
    	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    ...

I did not change anything in my users classes folder.

the exeption starts in class ClassPathScannerImpl :: loadClass of the library rlib

I do not understand the problem, I did not change anything

could you show your libraries settings in jMB, please? :slight_smile:

setting

I think it’s a problem with replacing slashes to dots:

I did a test:

I added this line:

private void loadClass(@NotNull final String name, @NotNull final Array<Class<?>> container) {
        if (!name.endsWith(CLASS_EXTENSION)) return;

        String className;
        try {

            className = name.replace(CLASS_EXTENSION, StringUtils.EMPTY);

            final StringBuilder result = new StringBuilder(className.length());

            for (int i = 0, length = className.length(); i < length; i++) {
                char ch = className.charAt(i);
                if(ch == '/') ch = '.';
                if(ch == '\\') ch = '.';   <---------- here
                result.append(ch);
            }

            className = result.toString();

        } catch (final Exception e) {
            LOGGER.warning(this, "Incorrect replaced " + name +
                    " to java path, used separator " + File.separator);
            return;
        }

the controllers load well but then I noticed an exception in the class CreateCustomControlDialog (line 172) of type NoClassDefFoundError on the loading of a com.jme.ai.navmesh class.

I I captured the exeption java.lang.NoClassDefFoundError and it works then.

yeah, I will update RLib a little bit later, because I’m working on improving high performance network system in this library now :slight_smile:

I have updated jME and RLib in the develop branch :slight_smile:

With the changes made to rlib library, an exeption rises in the CreateCustomControlDialog code

line 171:

 final Array<Class<Control>> implementations = CLASSPATH_MANAGER.findImplements(Control.class);
        implementations.forEach(items, (cs, classes) -> ClassUtils.hasConstructor(cs),
                (controlClass, classes) -> classes.add(controlClass));

In my case:

Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: com/jme3/ai/navmesh/NavMesh
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
	at java.lang.Class.getConstructors(Class.java:1651)
	at com.ss.rlib.util.ClassUtils.hasConstructor(ClassUtils.java:101)

I corrected by capturing the exception but I do not know if the problem comes from the other hand:

  for(Class<Control> c : implementations){
            try{
                    if(ClassUtils.hasConstructor(c));
                    items.add(c);
                }catch(java.lang.NoClassDefFoundError error){}
        }

could you show full exception log, please?