ArrayIndexOutOfBoundsException when loading from InputStream

Started by mahermeg17, June 01, 2017, 01:09:19 PM

Previous topic - Next topic

mahermeg17

Hi,
I'm using the same *.obj file once from the server as an InputStream  and once as a local file packaged into the apk
I get ArrayIndexOutOfBoundsException only when using InputStream.

Help plz.

// Create and set 3D Object from local file works fine
objet3d = Object3D.mergeAll(Loader.loadOBJ(getResources().openRawResource(R.raw.scan_resul), null, 1f));


// Create and set 3D Object from input stream generates ArrayIndexOutOfBoundsException
InputStream ip = new ByteArrayInputStream(previewData.data);
                try {
                        objet3d = Object3D.mergeAll(Loader.loadOBJ(ip, null, 1f));
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }


java.lang.ArrayIndexOutOfBoundsException: length=2608; index=2608
                                                                         at com.threed.jpct.Loader.createOBJObject(Loader.java:662)
                                                                         at com.threed.jpct.Loader.loadOBJ(Loader.java:526)
                                                                         at com.threed.jpct.Loader.loadOBJ(Loader.java:229)
                                                                         at com.akka.AirCobotMQTT.activity.Visualisation3DReleaseActivity$MyRenderer.onSurfaceChanged(Visualisation3DReleaseActivity.java:411)
                                                                         at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1511)
                                                                         at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)

EgonOlsen

That's strange. As far as loading goes, there should be no difference between the two ways. Are you sure that previewData.data really is an exact representation of the actual file's content?

Does this happen for any file or for just one in particular?

mahermeg17

yes they are the some .
I tried more than one .obj file and get the some exception.

mahermeg17

In fact the first issue happens because I use the inputstream wich made from a byte[] passed by an Intent
when I save it as file on the phone storage and load it again, it's loaded successfully.

EgonOlsen

Can you provide me with a simple example (code and model) that shows the problem? I can't reproduce this.