Applet 3D! Laden einer .obj Datei meldet "access denied"

jackisback

Erfahrenes Mitglied
Hallo,
habe ein Applet geschrieben und wollte es in einem Browser anzeigen lassen.
Ich bekomme folgenden Fehler im IE 6.0.2
Code:
java.security.AccessControlException: access denied (java.io.FilePermission Room.obj read)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkRead(Unknown Source)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileReader.<init>(Unknown Source)
	at com.sun.j3d.loaders.objectfile.ObjectFile.load(ObjectFile.java:675)
	at LoadScene.ertelleSzeneGraph(LoadScene.java:87)
	at LoadScene.init(LoadScene.java:61)
	at sun.applet.AppletPanel.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Hier mein Code:
Code:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;


import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.TransformGroup;
import javax.vecmath.*;

import com.sun.j3d.loaders.IncorrectFormatException;
import com.sun.j3d.loaders.ParsingErrorException;
import com.sun.j3d.loaders.Scene;
import com.sun.j3d.loaders.objectfile.ObjectFile;
import com.sun.j3d.utils.behaviors.mouse.MouseBehavior;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
import com.sun.j3d.utils.universe.SimpleUniverse;


public class LoadScene extends Applet {

	private String filename = null;
	private SimpleUniverse su = null; 
	private BoundingSphere bs = null;
	
	
	
	public void init(){
		
		if (filename == null) {
			//Applet
			try {
				URL path = getCodeBase();
				System.out.println(path.toString());
				filename = new URL(path+"Room.obj").toString();
				System.out.println(filename);
				
			} catch (MalformedURLException e) {
				// TODO: handle exception
				System.out.println(e);
				System.exit(1);
			}
		}
		filename = "Room.obj";
		
		//Wie in allen anderen Programmen verwenden wir ein SimpleUinverse
		setLayout(new BorderLayout());
		Canvas3D c = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
		add("Center", c);
		su = new SimpleUniverse(c);
		
		//Mit dieser Methode erstellen wir die Scene. Innerhalb dieser
		//Methode wird die Scene der Obj Datei geladen.
		BranchGroup scene = ertelleSzeneGraph();
		
		//Den Code in dem Beleuchtung Beschrieben wurde, haben wir
		//aufgrund der Übersichtlichkeit rausgetrichen
		
		su.getViewingPlatform().setNominalViewingTransform();
		scene.compile();
		
		//Natürlich müssen wir diese BranchGroup auch an den SzeneGraphen des
		//SimpleUniverse liefern
		su.addBranchGraph(scene);
		
	}
	
	public BranchGroup ertelleSzeneGraph(){
		BranchGroup objRoot = new BranchGroup();
		
		//Unser Modell soll natürlich an das Fenster angepasst werden.
		//Deswegen setzen wir das Flag Resize
		ObjectFile f = new ObjectFile(ObjectFile.RESIZE);
		Scene s = null;
		
		
		try {
			//Die in der Methode Init festgelegte Datei wird nun über die
			//Methode load() geladen und an die Scene s übergen.
			s = f.load(filename);
			
		} catch (FileNotFoundException e) {
			// TODO: handle exception
			System.out.println(e);
			System.exit(1);
			
		} catch (ParsingErrorException e) {
			// TODO: handle exception
			System.out.println(e);
			System.exit(1);
		} catch (IncorrectFormatException e) {
			// TODO: handle exception
			System.out.println(e);
			System.exit(1);
		}
		
		bs = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
		
		//Dem BranchGroup Objekt wird nun über die Methode getSceneGroup()
		//die Objekte der Scene übergeben.
		objRoot = s.getSceneGroup();
		
		//Noch den Hintergrund ändern.
		Color3f bgColor = new Color3f(0.9f,0.9f,0.9f);
		Background bgNote = new Background(bgColor);
		bgNote.setApplicationBounds(bs);
		objRoot.addChild(bgNote);
		
		//Es werde Licht
		DirectionalLight l1 = new DirectionalLight();
		l1.setInfluencingBounds(new BoundingSphere(new Point3d(1.0,1.0,1.0), 100.0));
		l1.setColor(new Color3f(0.9f,0.6f,0.4f));
		objRoot.addChild(l1);
		
		//
		
		
		TransformGroup vpTrans = su.getViewingPlatform().getViewPlatformTransform();
		BoundingSphere mouseBounds = new BoundingSphere(new Point3d(), 10.0);
		
		MouseRotate mRotate = new MouseRotate(MouseBehavior.INVERT_INPUT);
		mRotate.setTransformGroup(vpTrans);
		mRotate.setSchedulingBounds(mouseBounds);
		objRoot.addChild(mRotate);
		
		MouseTranslate mTranslate = new MouseTranslate();
		mTranslate.setTransformGroup(vpTrans);
		mTranslate.setSchedulingBounds(mouseBounds);
		objRoot.addChild(mTranslate);
		
		MouseZoom mZoom = new MouseZoom(MouseBehavior.INVERT_INPUT);
		mZoom.setTransformGroup(vpTrans);
		mZoom.setSchedulingBounds(mouseBounds);
		objRoot.addChild(mZoom);
		
		return objRoot;
	}

}

Im AppletViewer ist alles in ordnung.
Gibt es eine Möglichkeit das .obj file in einem String zu Schreiben und zu übergeben?
 
Ok ich habe eine Anleitung gefunden und ein Zertifikat erzeugt.
Nachdem ich die Zerti akzeptiere wird der Browser geschlossen.
Woran kann das liegen, wie kann ich die Konsole sehen falls eventuell Fehler auftreten?
 
Zurück