NoSuchMethodError when loading Blender model

Hi all,
I’m trying to run TestBlenderLoader.java, but the app throws an exception;

java.lang.NoSuchMethodError: 'void com.jme3.math.Matrix4f.toTranslationVector(com.jme3.math.Vector3f)'
	at com.jme3.scene.plugins.blender.objects.ObjectHelper.getTransformation(ObjectHelper.java:383)
	at com.jme3.scene.plugins.blender.objects.ObjectHelper.toObject(ObjectHelper.java:150)
	at com.jme3.scene.plugins.blender.BlenderLoader.load(BlenderLoader.java:105)
	at com.jme3.scene.plugins.blender.BlenderLoader.load(BlenderLoader.java:88)
	at com.jme3.asset.DesktopAssetManager.loadLocatedAsset(DesktopAssetManager.java:260)
	at com.jme3.asset.DesktopAssetManager.loadAsset(DesktopAssetManager.java:374)
	at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:417)
	at com.jme3.asset.DesktopAssetManager.loadModel(DesktopAssetManager.java:421)

My JME dep version: 3.3.2-stable and I’m using jme3-blender:3.2.0-beta1. I tried on (8/11/14 Oracle OpenJDK and 11/14 AdoptOpen JDK). I’m using OS X (10.14.6).

Also, I set JVM Argument: -Xmx4g otherwise I’m getting OutOfMemoryError: Java heap space (I think this is another story, but it works with the argument)

NoSuchMethod errors are the runtime equivalent of a compiler error in that case. It’s always a version mismatch. And as you saw you are using 3.3 for the engine and 3.2 for blender, so you’d need to recompile blender against 3.3 or using an older engine version together with the blender importer.

Also note that you typically do not want to import blender files during runtime but use a tool for it (and that blender importer is out of maintenance, GLTF is the future)

2 Likes

Thank you so much, it worked! Maven had the 3.2.0-beta1 so I thought this was the final version and did not release 3.3.2-stable also exists. I’ll check GLTF (don’t know what that is at the moment).

1 Like

.blend files = proprietary Blender-specific data files whose format can and will change at any time with each new Blender version, includes features that are designed for feature films, etc. and is essentially impossible to support properly.

.GLTF = open standard for model interchange between tools. Managed by Khronos themselves (OpenGL people) and has wide tool support: glTF Overview - The Khronos Group Inc

…even if there might be some bugs in gltf, it is still the right answer in the long term. And the known bugs are unlikely to affect you.

Also, in JME, it supports PBR natively which is nice.

3 Likes