# Applet (Class-Datei(en)) in Html-Seite einbinden - Clipboard



## Booyeoo (4. Feb 2008)

Hallo Zusammen,

Kann es sein dass der Zugriff auf die Zwischenablage über Applets nicht möglich ist???

Ich habe folgendes Problem:

Mein Applet StringGenerator.class will einfach nicht im Browser laufen.

Ich habe diesen mit NetBeans 5.5.1 entworfen. In Netbeans wenn ich auf die Quelldatei klicke und sage Datei ausführen läuft es problemlos wie es soll.

Sobald ich es irgendwie versuche in einem Browser laufen zu bringen, gehts nicht.

Nach mehreren Stunden habe ich es geschafft, dass das Applet immerhin angezeigt wird in meinem Browser, jedoch funktioniert der Button einfach nicht, somit ist das ganze fürn A....


```
<html>
<body>
<applet code=sgpackage.StringGenerator.class width="500" height="500">
</applet> 
</body>
</html>
```

sgpackage dort befinden sich die Class Dateien:
StringGenerator$1..$5.class und dann StringGenerator.class die mit abstand die Größte ist.

Console gibt folgendes aus:

Exception in thread "AWT-EventQueue-5" java.security.AccessControlException: access denied (java.awt.AWTPermission accessClipboard)
	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.checkSystemClipboardAccess(Unknown Source)
	at sun.awt.windows.WToolkit.getSystemClipboard(Unknown Source)
	at sgpackage.StringGenerator.butGoActionPerformed(StringGenerator.java:172)
	at sgpackage.StringGenerator.access$100(StringGenerator.java:21)
	at sgpackage.StringGenerator$2.actionPerformed(StringGenerator.java:75)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)



Hatte im Forum und auf der Seite geschaut leider nun verzeweifelt.

WindowsXP SP2
Firefox 2.0.0.11
Netbeans 5.5.1
Java 1.6.0.3

Danke für jede Hilfe

MfG
Roland


----------



## Wildcard (4. Feb 2008)

Natürlich dürfen nur signierte Applets das Clipboard auslesen.


----------



## Booyeoo (4. Feb 2008)

Wildcard hat gesagt.:
			
		

> Natürlich dürfen nur signierte Applets das Clipboard auslesen.



Muss ich meine class Datei zu Sun schicken damit die signiert wird, oder wie signiere ich die?


----------



## Booyeoo (4. Feb 2008)

Habe im Quelltext die Zugriffe und das Laden der Packete für die Zwischenablage auskommentiert. Es funktioniert immernoch nicht...


----------



## Booyeoo (4. Feb 2008)

Siehe auch älteres offenes Thema: Keine Berechnung im Applet


----------



## Wildcard (4. Feb 2008)

Booyeoo hat gesagt.:
			
		

> Muss ich meine class Datei zu Sun schicken damit die signiert wird, oder wie signiere ich die?


Nein, du kannst deine jar selbst signieren, siehe dazu die FAQ.


----------



## Booyeoo (4. Feb 2008)

So ich habe nun mittels des sehr comfortablen tools SignTool.bat meine Jar Datei erzeugt. Nachdem ich ein selbstgwähltes Passwort 3 mal eingegeben hatte, erschien waren alle Dateien mit smk getaggt. Ich denke daher das da alles richtig gelaufen ist. 

Ich habe die signtool.bat in dem Verzeichniss ausgeführt, in welchem Netbeans die Classes des Projects lagert (.../Bin/Classes/sgpackage/). Nun bekomme ich aber leider immernoch die java.security.AccessControlException.

Was mache ich mit der Jar Datei? Ich habe die Rolis.html unter c: gespeichert. Den Ordner erstellt: sgpackage, in diesem befinden sich die ganzen *.class Dateien. Ich habe dort und auch unter c: die generierte jar Datei hinterlegt. Es geht nicht.... Hilfe... ?!


----------



## Wildcard (4. Feb 2008)

Im html muss die jar mittels des attributs archive referenziert werden. Die einzelnen class files kannst du löschen.


----------



## Booyeoo (4. Feb 2008)

Ach Sorry, hier die genannte rolis.html:


```
<html>
<body>
<applet archive="StringGenerator.jar" code=sgpackage.StringGenerator.class width="500" height="500">
</applet> 
</body>
</html>
```

Applet lädt erfolgreich. Sobald ich auf den Knopf und der eine Methode startet welche aufs Clipboard zugreift, kommt folgende Exception in der Console:



```
Exception in thread "AWT-EventQueue-4" java.security.AccessControlException: access denied (java.awt.AWTPermission accessClipboard)
	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.checkSystemClipboardAccess(Unknown Source)
	at sun.awt.windows.WToolkit.getSystemClipboard(Unknown Source)
	at sgpackage.StringGenerator.butGoActionPerformed(StringGenerator.java:165)
	at sgpackage.StringGenerator.access$100(StringGenerator.java:18)
	at sgpackage.StringGenerator$2.actionPerformed(StringGenerator.java:72)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
```


Vielleicht kann man Zugriffe aufs Clipboard selbst mit Signierung nicht über ein Applet erzwingen??!?

Danke für eure Mühe. 
 :toll:


----------



## Wildcard (4. Feb 2008)

Bist du denn gefragt worden ob dem Applet Zugriff gewährt werden soll (vor dem Start)?
Wenn nein, dein Applet ist entweder noch nicht signiert, oder du lädst eine alte Version aus dem Cache, oder du hast die class Files nicht vom Server gelöscht.



> Vielleicht kann man Zugriffe aufs Clipboard selbst mit Signierung nicht über ein Applet erzwingen??!?


Mit einem Applet kann man alles machen was man mit einer Applikation machen kann, also auch das Clipboard auslesen.


----------



## L-ectron-X (4. Feb 2008)

Lösche mal alle .class-Dateien aus dem Verzeichnis c:\sgpackage, in dem jetzt die signierte Jar-Datei liegt.
Es kann passieren, dass der Browser sich zuerst die .class-Datei schnappt.


----------



## Booyeoo (4. Feb 2008)

Wildcard hat gesagt.:
			
		

> Bist du denn gefragt worden ob dem Applet Zugriff gewährt werden soll (vor dem Start)?
> Wenn nein, dein Applet ist entweder noch nicht signiert, oder du lädst eine alte Version aus dem Cache, oder du hast die class Files nicht vom Server gelöscht.



Nein, leider nicht. Habe auch schon das Plugin NoScript deaktiviert, aber es hat ja auch ohne Clipboard funktioniert.

Aufm Server ists dann wieder eine andere Geschichte, da hat auch die ohne-Clipboard-Variante nicht funktioniert. 
Das kann aber auch an Funpic.de liegen oder sonstigen Einstellungen. Ich wills erstmal lokal schaffen.

Also ich versuche nochmal alles kurz Zusammenzufassen. 
Ich habe nochmals von vorne die StringGenerator.jar Datei in dem NetBeans-Quellverzeichniss mit dem Signtool erstellt.
Bei dem Signtool kommt beim 2.Schritt jetzt immer die Meldung, dass das Passwort schon exisitiert? (Wird dabei immer das Passwort mit dem in der Signtool.bat-Datei hinterlegten Namen verglichen? und das wird sonstwo gepseichert?)
Jedenfalls laufen die weiteren Schritte normal. --> Jar Datei erstellt.
Diese jar Datei kopiere ich dann in das sgpackage Verzeichiss auf c:.
In diesem Verzeichniss befindet sich nichts, außer das Package. (Hab nachher zu Testzwecken das Jar-Package, entpackt, aber selbst dann läufts nicht)
In der html-Datei unter c: verweise ich auf diese jar Datei.

Hier der momentane Stand 



 

:cry:


Ich habe das Gefühl dass das Verzeichniss irgendwie falsch ist, aber würde nicht verstehen warum die eine Version ohne Clipboard läuft und die mit nicht. Wenn dann muss es an dem Signing liegen, oder???



 
[/img]

Bin langsam mit meinen Nerven am Ende

Danke euch für jeden Tipp.


----------



## L-ectron-X (4. Feb 2008)

Booyeoo hat gesagt.:
			
		

> Bei dem Signtool kommt beim 2.Schritt jetzt immer die Meldung, dass das Passwort schon exisitiert? (Wird dabei immer das Passwort mit dem in der Signtool.bat-Datei hinterlegten Namen verglichen? und das wird sonstwo gepseichert?)


Das ist kein Problem. Es wird nur wieder ein neues Zertifikat für den Signer angelegt. Und da bereits eins existiert, meldet das Tool eine bereits vorhandene .keystore Datei, die sich in Windows unter _C:\Dokumente und Einstellungen\Benutzername_ befindet.
Die Signierung funktioniert trotzdem.

Wenn ich mir so die Fehlermeldung betrachte, komme ich zum Schluss, dass eine Datei nicht existiert, oder sie kann über den Packagenamen nicht gefunden werden.


----------



## Booyeoo (4. Feb 2008)

Ich finde die Ausgabe in der Console kurios. Wieso sucht der denn auch nach einer class.class Datei? Ich glaube ich werde nochmal alles von neu machen. Ein nagelneues Projekt in Netbeans usw....


----------

