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
Hier mein Code:
Im AppletViewer ist alles in ordnung.
Gibt es eine Möglichkeit das .obj file in einem String zu Schreiben und zu übergeben?
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?