public static Savable fromName(String className)
            throws ClassNotFoundException, IllegalAccessException,
            InstantiationException, InvocationTargetException {
        className = remapClass(className);

        Constructor noArgConstructor = findNoArgConstructor(className);
        noArgConstructor.setAccessible(true);
        try {
            return (Savable) noArgConstructor.newInstance();
        } catch (InvocationTargetException | InstantiationException e) {
            Logger.getLogger(SavableClassUtil.class.getName()).log(
                    Level.SEVERE, "Could not access constructor of class ''{0}" + "''! \n"
                    + "Some types need to have the BinaryImporter set up in a special way. Please double-check the setup.", className);
            throw e;
        } catch (IllegalAccessException e) {
            Logger.getLogger(SavableClassUtil.class.getName()).log(
                    Level.SEVERE, "{0} \n"
                    + "Some types need to have the BinaryImporter set up in a special way. Please double-check the setup.", e.getMessage());
            throw e;
        }
    }
fromName creates a new Savable from the provided class name. First registered modules
are checked to handle special cases, if the modules do not handle the class name, the
class is instantiated directly.
@param className the class name to create.
@return the Savable instance of the class.
@throws InstantiationException thrown if the class does not have an empty constructor.
@throws IllegalAccessException thrown if the class is not accessible.
@throws InvocationTargetException if the underlying constructor throws an exception
@throws ClassNotFoundException thrown if the class name is not in the classpath.
jme3-core/src/main/java/com/jme3/export/SavableClassUtil.java