WinFuture-Forum.de: Java Applet Wird Nicht Ausgeführt - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Java Applet Wird Nicht Ausgeführt


#1 Mitglied ist offline   bLaCkRaBbIt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.396
  • Beigetreten: 08. November 04
  • Reputation: 2
  • Geschlecht:Männlich
  • Wohnort:Karlsbad

geschrieben 16. Juni 2006 - 11:13

hi leute.

ich habe ein java applet gemacht. darin nutze ich auch 2 bilder als icon. das applet läuft,wenn ich es mit eclipse starte. so weit so gut. dann erstelle ich mir jar ein jar archiv (jar cvf fussball.jar -C projektordner\*) dann habe ich eine signatur mit keytool erstellt, danach mit jarsigner signiert (jarsigner fussball.jar Zer2).
TheGame heißt die klasse im jar archiv.
nun habe ich es auf den webserver hochgeladen und folgende html datei dazu:
<html>
<head>
<title> Das Fussball-Game </title>
</head>
<body>
<b> Das Fussball-Game </b>
<hr></hr>
<APPLET archive="fussball.jar" width="450" height="600" align="middle" code="TheGame.class">
Hier sollte eigentlich ein Applet laufen
</applet>
<hr></hr>
Mit normalem Text geht es weiter ...
</body>
</html>


wenn ich die html seite aufrufe, wird das applet nicht gestartet. folgender fehler:
Ausnahme: java.security.AccessControlException: access denied(java.io.FilePermission deutschlandflagge.jpf read). im konsolenfenster zeigt es mir folgendes:
java.security.AccessControlException: access denied (java.io.FilePermission deutschlandflagge.jpg 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 sun.awt.SunToolkit.getImageFromHash(Unknown Source)
	at sun.awt.SunToolkit.getImage(Unknown Source)
	at javax.swing.ImageIcon.<init>(Unknown Source)
	at javax.swing.ImageIcon.<init>(Unknown Source)
	at TheGame.init(TheGame.java:32)
	at sun.applet.AppletPanel.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Exception in thread "thread applet-TheGame.class" java.lang.NullPointerException
	at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
	at sun.plugin.AppletViewer.showAppletException(Unknown Source)
	at sun.applet.AppletPanel.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

hier mal das projekt und die html file
Angehängte Datei  fussball.rar (7,97K)
Anzahl der Downloads: 334
Angehängte Datei  TheGame.html (330bytes)
Anzahl der Downloads: 228

was mache ich falsch?
0

Anzeige



#2 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.701
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 16. Juni 2006 - 11:40

1. kommt das .class da weg, also code="TheGame" (Wenn du eine ordentliche Manifest hast, wird das sowieso nicht benötigt).

2. musst du dem Applet erst das Recht geben idF Dateien zu lesen
Die einfachste Methode ist die $JAVA_HOME/jre/lib/security/java.policy anzupassen.
Um einiges besser ist es jedoch ein Zertifikat zu benutzen. Hier mehr

3. ist schön programmieren was anderes :imao:

Dieser Beitrag wurde von Witi bearbeitet: 16. Juni 2006 - 11:44

0

#3 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 16. Juni 2006 - 13:57

Äh... die Resource liegt doch in der JAR-Datei, da brauchst du gar keine Extra-Rechte.

Was du aber brauchst ist die explizite Nutzung deiner Rechte, d.h. du musst dir erst selbst die FilePermission für die Dateien geben. Und weil du per Policy das Recht dazu hast, geht das immer gut und wird ohne Warnung genehmigt. Die Signatur ist dafür auch nicht nötig.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#4 Mitglied ist offline   bLaCkRaBbIt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.396
  • Beigetreten: 08. November 04
  • Reputation: 2
  • Geschlecht:Männlich
  • Wohnort:Karlsbad

geschrieben 20. Juni 2006 - 07:28

und warum klappt es dann nicht?oder muss ich im quelltext noch irgendwas wegen rechte eintragen?
0

#5 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 20. Juni 2006 - 12:13

Nochmal: Es reicht nicht, die entsprechenden Rechte zu haben, du musst sie auch aktivieren, um sie nutzen zu können.

Permission fp = new FilePermission("deutschlandflagge.jpg","read");
// debugging: AccessController.checkPermission(fp); wirft sofort  SecurityException, falls die Permission nicht anerkannt wird
deuschlandflagge = (ImageIcon) AccessController.doPrivileged(new PrivilegedAction() {
		   public Object run() {
			  return new ImageIcon("deutschlandflagge.jpg");
		   }
	   });


Am besten alle sicherheitsrelevanten Code in den doPrivileged-Teil reinschieben, denn außerhalb ist die Permission nicht nutzbar und mehrere doPrivileged drücken die Performance. In dem Beispiel holt man sich nur als Teil des ImageIcon einen FileHandle mit read-Berechtigung.

Zur Sicherheit nimmst du noch mal eine Policy-Datei hinzu, falls die Default-Policy dir den Zugriff nicht erlaubt oder irgendwie nicht funktioniert:
grant signedBy "schwarzes Hoppelhaeschen" {
   permission java.io.FilePermission "deutschlandflagge.jpg", "read";
};

Dieser Beitrag wurde von Rika bearbeitet: 20. Juni 2006 - 12:20

Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#6 Mitglied ist offline   bLaCkRaBbIt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.396
  • Beigetreten: 08. November 04
  • Reputation: 2
  • Geschlecht:Männlich
  • Wohnort:Karlsbad

geschrieben 21. Juni 2006 - 10:12

danke rika,

muss ich außer java.io.FilePermission.* noch andere klassen importieren?
0

#7 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 21. Juni 2006 - 10:25

offensichtlicherweise:

java.security.AccessController
java.security.PrivilegedAction
java.security.Permission
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#8 Mitglied ist offline   bLaCkRaBbIt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.396
  • Beigetreten: 08. November 04
  • Reputation: 2
  • Geschlecht:Männlich
  • Wohnort:Karlsbad

geschrieben 21. Juni 2006 - 11:06

ich versteh nicht,warum es nicht klappt. hab folgenden code dazu gemacht(exception habe ich jetzt noch nicht beachtet):

		Permission fp = new FilePermission("*", "read");
		deuschlandflagge = (ImageIcon) AccessController.doPrivileged(
				new PrivilegedAction() {
				   				public Object run() {
				   					return new ImageIcon("deutschlandflagge.jpg");
				   				}
				
			   	}
		);
		ecuadorflagge = (ImageIcon) AccessController.doPrivileged(
				new PrivilegedAction() {
			   					public Object run() {
			   						return new ImageIcon("ecuadorflagge.jpg");
			   					}
		   		}
		);
		flagge1 = new JLabel(deuschlandflagge, JLabel.CENTER);
		flagge2 = new JLabel(ecuadorflagge, JLabel.CENTER);

doch es funktioniert immer noch nicht

Dieser Beitrag wurde von bLaCkRaBbIt bearbeitet: 21. Juni 2006 - 11:06

0

#9 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.505
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 21. Juni 2006 - 11:10

Zitat

"*"

Wohl ein wenig übereifrig? Mal ganz davon abgesehen, daß das sowieso nicht valide ist.

Ich überleg gerade, ob sich die FilePermission selbst in den SecurityManager einsortiert oder ob man das selbst machen musste...
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#10 Mitglied ist offline   bLaCkRaBbIt 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.396
  • Beigetreten: 08. November 04
  • Reputation: 2
  • Geschlecht:Männlich
  • Wohnort:Karlsbad

geschrieben 21. Juni 2006 - 11:19

zum einen kommt kein fehler beim compilieren und zum anderen habe ich gelesen,dass das so geht. alternativ kann ich die 2 files auch in einen ordner flagge legen und "flagge\\*" benutzen
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0