Level loading - only crap?

package example;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Level;
 
import com.jme.app.AbstractGame;
import com.jme.app.SimpleGame;
import com.jme.bounding.BoundingSphere;
import com.jme.scene.Node;
import com.jme.util.LoggingSystem;
import com.jme.util.export.binary.BinaryImporter;
import com.jmex.model.XMLparser.XMLtoBinary;
import com.jmex.model.XMLparser.Converters.FormatConverter;
import com.jmex.model.XMLparser.Converters.ObjToJme;

public class HelloModelLoading extends SimpleGame {
    public static void main(String[] args) {
        HelloModelLoading app = new HelloModelLoading();
        app.setDialogBehaviour(AbstractGame.ALWAYS_SHOW_PROPS_DIALOG);
        // Turn the logger off so we can see the XML later on
        LoggingSystem.getLogger().setLevel(Level.OFF);
        app.start();
    }
 
    protected void simpleInitGame() {
        // Point to a URL of my model
        URL model=HelloModelLoading.class.getClassLoader().getResource("level/test.xml");
 
        // Create something to convert .obj format to .jme
        XMLtoBinary converter=new XMLtoBinary();
        // Point the converter to where it will find the .mtl file from
        //converter.setProperty("mtllib",model);
 
        // This byte array will hold my .jme file
        ByteArrayOutputStream BO=new ByteArrayOutputStream();
        try {
            // Use the format converter to convert .obj to .jme
            converter.sendXMLtoBinary(model.openStream(), BO);
            Node maggie=(Node)BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray()));
            // shrink this baby down some
            maggie.setLocalScale(.1f);
            maggie.setModelBound(new BoundingSphere());
            maggie.updateModelBound();
            // Put her on the scene graph
            rootNode.attachChild(maggie);
        } catch (IOException e) {   // Just in case anything happens
            System.out.println("Damn exceptions!" + e);
            e.printStackTrace();
            System.exit(0);
        }
    }
}



result:

java.io.IOException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(Unknown Source)
at java.util.zip.GZIPInputStream.<init>(Unknown Source)
at java.util.zip.GZIPInputStream.<init>(Unknown Source)
at com.jme.util.export.binary.BinaryImporter.load(Unknown Source)
at com.jme.util.export.binary.BinaryImporter.load(Unknown Source)
at example.HelloModelLoading.simpleInitGame(HelloModelLoading.java:42)
at com.jme.app.BaseSimpleGame.initGame(Unknown Source)
at com.jme.app.BaseGame.start(Unknown Source)
at example.HelloModelLoading.main(HelloModelLoading.java:25)
Damn exceptions!java.io.IOException: Not in GZIP format


next....


package example;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Level;
 
import com.jme.app.AbstractGame;
import com.jme.app.SimpleGame;
import com.jme.bounding.BoundingSphere;
import com.jme.scene.Node;
import com.jme.util.LoggingSystem;
import com.jme.util.export.binary.BinaryImporter;
import com.jmex.model.XMLparser.XMLtoBinary;
import com.jmex.model.XMLparser.Converters.FormatConverter;
import com.jmex.model.XMLparser.Converters.MaxToJme;
import com.jmex.model.XMLparser.Converters.ObjToJme;

public class HelloModelLoading extends SimpleGame {
    public static void main(String[] args) {
        HelloModelLoading app = new HelloModelLoading();
        app.setDialogBehaviour(AbstractGame.ALWAYS_SHOW_PROPS_DIALOG);
        // Turn the logger off so we can see the XML later on
        LoggingSystem.getLogger().setLevel(Level.OFF);
        app.start();
    }
 
    protected void simpleInitGame() {
        // Point to a URL of my model
        URL model=HelloModelLoading.class.getClassLoader().getResource("level/house.3ds");
 
        // Create something to convert .obj format to .jme
        FormatConverter converter = new MaxToJme();
        // Point the converter to where it will find the .mtl file from
        //converter.setProperty("mtllib",model);
 
        // This byte array will hold my .jme file
        ByteArrayOutputStream BO=new ByteArrayOutputStream();
        try {
            // Use the format converter to convert .obj to .jme
            converter.convert(model.openStream(), BO);
            Node maggie=(Node)BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray()));
            // shrink this baby down some
            maggie.setLocalScale(.1f);
            maggie.setModelBound(new BoundingSphere());
            maggie.updateModelBound();
            // Put her on the scene graph
            rootNode.attachChild(maggie);
        } catch (IOException e) {   // Just in case anything happens
            System.out.println("Damn exceptions!" + e);
            e.printStackTrace();
            System.exit(0);
        }
    }
}



result:
Damn exceptions!java.io.IOException: Header length doesn't match up: End ID#:7 len left to read=-1092616098 parentID#=4100
java.io.IOException: Header length doesn't match up: End ID#:7 len left to read=-1092616098 parentID#=4100
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.chunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.TriMeshChunk.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.NamedObjectChunk.processChildChunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.chunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.NamedObjectChunk.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.EditableObjectChunk.processChildChunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.chunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.EditableObjectChunk.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.TDSFile.processChildChunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.chunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.TDSFile.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.MaxToJme.convert(Unknown Source)
at example.HelloModelLoading.simpleInitGame(HelloModelLoading.java:42)
at com.jme.app.BaseSimpleGame.initGame(Unknown Source)
at com.jme.app.BaseGame.start(Unknown Source)
at example.HelloModelLoading.main(HelloModelLoading.java:26)

next...


package example;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Level;
 
import com.jme.app.AbstractGame;
import com.jme.app.SimpleGame;
import com.jme.bounding.BoundingSphere;
import com.jme.scene.Node;
import com.jme.util.LoggingSystem;
import com.jme.util.export.binary.BinaryImporter;
import com.jmex.model.XMLparser.XMLtoBinary;
import com.jmex.model.XMLparser.Converters.FormatConverter;
import com.jmex.model.XMLparser.Converters.MaxToJme;
import com.jmex.model.XMLparser.Converters.ObjToJme;

public class HelloModelLoading extends SimpleGame {
    public static void main(String[] args) {
        HelloModelLoading app = new HelloModelLoading();
        app.setDialogBehaviour(AbstractGame.ALWAYS_SHOW_PROPS_DIALOG);
        // Turn the logger off so we can see the XML later on
        LoggingSystem.getLogger().setLevel(Level.OFF);
        app.start();
    }
 
    protected void simpleInitGame() {
        // Point to a URL of my model
        URL model=HelloModelLoading.class.getClassLoader().getResource("level/eagle.obj");
 
        // Create something to convert .obj format to .jme
        FormatConverter converter = new ObjToJme();
        // Point the converter to where it will find the .mtl file from
        //converter.setProperty("mtllib",model);
 
        // This byte array will hold my .jme file
        ByteArrayOutputStream BO=new ByteArrayOutputStream();
        try {
            // Use the format converter to convert .obj to .jme
            converter.convert(model.openStream(), BO);
            Node maggie=(Node)BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray()));
            // shrink this baby down some
            maggie.setLocalScale(.1f);
            maggie.setModelBound(new BoundingSphere());
            maggie.updateModelBound();
            // Put her on the scene graph
            rootNode.attachChild(maggie);
        } catch (IOException e) {   // Just in case anything happens
            System.out.println("Damn exceptions!" + e);
            e.printStackTrace();
            System.exit(0);
        }
    }
}



result:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at com.jmex.model.XMLparser.Converters.ObjToJme.processLine(Unknown Source)
at com.jmex.model.XMLparser.Converters.ObjToJme.convert(Unknown Source)
at example.HelloModelLoading.simpleInitGame(HelloModelLoading.java:42)
at com.jme.app.BaseSimpleGame.initGame(Unknown Source)
at com.jme.app.BaseGame.start(Unknown Source)
at example.HelloModelLoading.main(HelloModelLoading.java:26)


i read every tutorial and it is the example code, but why, why and why it do not work?