Applet starten

sharky

Mitglied
Hallo zusammen,

ich bin neu hier in der Runde und wie kann es auch anders sein ... ich hab ein Problem (oder nur ein Brett vorm Kopf), dass mich gerade daran hindert mein privates "Projekt" voran zu treiben. Nur damit nicht zu viel erwartet wird... ich bin ein absoluter Anfänger ... mein Java-Kurs liegt 10 Jahre zurück und gerafft habe ich damals nicht viel aber vor vier Wochen habe ich mich mal wieder rangetraut und versuche seit dem mein Wissen über Online-Quellen aufzubauen.

Was habe ich eigentlich geplant?
Ich habe einen lizensierten Account bei einem Provider für Multimedia-Inhalte, bei dem zur Zeit ca. 1000 Files liegen, die ich herunterladen könnte aber spätestens nach 30 Tagen wieder entfernt werden. Nun möchte ich nicht mühselig manuell mitschreiben, welches File ich schon geladen habe und welches nicht, daher wollte ich über Greasemonkey die Archiv Seite des Providers auslesen, die AJAX-Requests zum ermitteln der URLs automatisiert abschicken und dann die Daten an ein Applet weitergeben, in einer lokalen Datenbank speichern und über das Applet auch herunterladen.

Ich war eigentlich schon soweit, dass ich die Seite auslesen konnte und ich hab auch mal über eine JAVA-Applikation ein einfaches Download-Tool realisert. Woran ich zur Zeit scheiter ist ein lokales Applet in eine Seite einzubinden, da ich später über Greasemonkey die Seite des Providers dahingehend manipulieren müsste, dass mein Applet dort erscheint.

Um es erstmal ganz simpel zu halten, habe ich ein Applet erstellt, dass ein Bild anzeigt und versucht dieses in eine lokale html Datei einzubinden, aber egal was ich mache entweder ich bekomme eine ClassNotFound Exception oder der Firefox friert ein.

Ich hoffe mal, dass mir jemand das Brett vorm Kopf entfernen kann.

Gruss
Holger aka sharky

Anbei die Daten:
Mein Applet (in der Testumgebung von NetBeans funktioniert es)
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package test_applet_grease;


import java.applet.*;
import java.awt.*;
/**
 *
 * @author sharky
 */
public class Test_applet_grease extends Applet {
    Image bild;  
    /**
     * @param args the command line arguments
     */
    public void init() {      
        bild = getImage(getDocumentBase(),"http://www.save.tv/STV/IMG/global/remote_top.jpg");       
        
    }   
    public void paint (Graphics g) {
            g.drawImage(bild,0,0,this);       
    }
}

Die lokale HTML-Seite (Speicherort ist E:\ ... das Archiv liegt auch dort)
HTML:
<html>
<body>
<applet codebase="file:///E:/" code="Test_applet_grease.class" archive="test_applet_grease.jar"  >
</applet>
</body>
</html>

CLASSPATH
Code:
.;C:\Program Files (x86)\QuickTime\QTSystem\QTJava.zip;E:\;E:\test_applet_grease.jar

JAVA-Konsoleninhalt (nur wenn der FF nicht einfriert)
Detected from bootclasspath: E:\\ANWEND~1\\Tools\\Java\\JRE7-x86\\lib\\deploy.jar
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.definition value null
security: property package.definition new value com.sun.javaws
security: property package.definition value com.sun.javaws
security: property package.definition new value com.sun.javaws,com.sun.deploy
security: property package.definition value com.sun.javaws,com.sun.deploy
security: property package.definition new value com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
security: property package.definition value com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.definition new value com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
basic: Fortschritts-Listener hinzugefügt: sun.plugin.util.ProgressMonitorAdapter@1074a5f
basic: Plugin2ClassLoader.addURL parent called for file:/E:/test_applet_grease.jar
network: Cacheeintrag nicht gefunden [URL: file:/E:/test_applet_grease.jar, Version: null]
network: Cacheeintrag nicht gefunden [URL: file:/E:/, Version: null]
java.lang.ClassNotFoundException: Test_applet_grease.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
basic: Laden: Klasse Test_applet_grease.class nicht gefunden.
java.lang.ClassNotFoundException: Test_applet_grease.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Ignored exception: java.lang.ClassNotFoundException: Test_applet_grease.class
 
okay jetzt nicht schlagen ... aber nachdem ich den Post geschrieben habe ... habe ich nochmal was anderes ausprobiert, wovon ich eigentlich ausgegangen bin, dass ich das schon gemacht habe und jetzt hat sich die Exception verändert und jetzt muss ich erstmal wieder googeln

Java-Plug-in 10.0.0.147
JRE-Version verwenden 1.7.0-b147 Java HotSpot(TM) Client VM
Benutzer-Home-Verzeichnis = C:\Users\sharky
----------------------------------------------------
c: Konsolenfenster löschen
f: Objekte in Finalisierungs-Queue finalisieren
g: Garbage Collect
h: Diese Hilfemeldung anzeigen
l: Class Loader-Liste ausgeben
m: Speicherauslastung drucken
o: Logging auslösen
q: Konsole ausblenden
r: Policy-Konfiguration neu laden
s: System- und Deployment-Eigenschaften ausgeben
t: Threadliste ausgeben
v: Thread-Stack ausgeben
x: Class Loader-Cache leeren
0-5: Trace-Ebene auf <n> setzen
----------------------------------------------------
Detected from bootclasspath: E:\\ANWEND~1\\Tools\\Java\\JRE7-x86\\lib\\deploy.jar
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.definition value null
security: property package.definition new value com.sun.javaws
security: property package.definition value com.sun.javaws
security: property package.definition new value com.sun.javaws,com.sun.deploy
security: property package.definition value com.sun.javaws,com.sun.deploy
security: property package.definition new value com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.access value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.access new value sun.,com.sun.xml.internal.ws.,com.sun.xml.internal.bind.,com.sun.imageio.,com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
security: property package.definition value com.sun.javaws,com.sun.deploy,com.sun.jnlp
security: property package.definition new value com.sun.javaws,com.sun.deploy,com.sun.jnlp,org.mozilla.jss
basic: Fortschritts-Listener hinzugefügt: sun.plugin.util.ProgressMonitorAdapter@1a0d62f
basic: Plugin2ClassLoader.addURL parent called for file:/E:/test_applet_grease.jar
network: Cacheeintrag nicht gefunden [URL: file:/E:/test_applet_grease.jar, Version: null]
network: Cacheeintrag nicht gefunden [URL: file:/E:/test_applet_grease.jar, Version: null]
basic: Applet geladen.
basic: Applet resized and added to parent container
basic: PERF: AppletExecutionRunnable - applet.init() BEGIN ; jvmLaunch dt 129493 us, pluginInit dt 144876 us, TotalTime: 274369 us
network: Cacheeintrag nicht gefunden [URL: http://www.save.tv/crossdomain.xml, Version: null]
network: Verbindung von http://www.save.tv/crossdomain.xml mit Proxy=DIRECT wird hergestellt
network: Verbindung von http://www.save.tv:80/ mit Proxy=DIRECT wird hergestellt
network: http://www.save.tv/crossdomain.xml wird mit Cookie "AF_TRACKINGID=0; AF_SCRC=%20%2C%20%2521%2521%2540%2520%2520%250A%2C%20; VIDUUID=8C5F77E2%2DA59F%2D0EE8%2D74D4103FB3B18B4B; __utma=54434858.87709262.1312972320.1312972320.1312972320.1; __utmz=54434858.1312972320.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); SLOCO=AD172A4D%2DB2B9%2DDA33%2DAC87C971ED3F0D22" verbunden
java.security.AccessControlException: access denied ("java.net.SocketPermission" "www.save.tv" "resolve")
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.checkConnect(Unknown Source)
at sun.plugin2.applet.SecurityManagerHelper.checkConnectHelper(Unknown Source)
at sun.plugin2.applet.AWTAppletSecurityManager.checkConnect(Unknown Source)
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter$AppletContextImpl.getImage(Unknown Source)
at java.applet.Applet.getImage(Unknown Source)
at java.applet.Applet.getImage(Unknown Source)
at test_applet_grease.Test_applet_grease.init(Test_applet_grease.java:24)
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Ignored exception: java.security.AccessControlException: access denied ("java.net.SocketPermission" "www.save.tv" "resolve")
basic: Fortschritts-Listener entfernt: sun.plugin.util.ProgressMonitorAdapter@1a0d62f
security: Zugriff auf Schlüssel und Zertifikat im Mozilla-Benutzerprofil: null
security: Speicher für abgelehnte Sessionzertifikate zurücksetzen
 
narf ... naja das Problem saß wie immer 20 cm vor dem Bildschirm ... naja ... nächster Schritt ... bis zum nächsten Mal 😉

achja und sollte nochmal ein Anfänger wie ich darüber stolpern ... ich hab folgendes gemacht..

1. Ich hatte das Attribut CODE in der HTML nicht richtig gesetzt
Test_applet_grease.class statt test_applet_grease.Test_applet_grease.class
2. Die jar Datei war nicht signiert ... siehe FAQ
 
Zuletzt bearbeitet:
hmmm ... jetzt bin ich gerade wieder ratlos ... ich gehe mal davon aus, dass es wieder was mit den Security Policies zu tuen hat nur wo genau weiss ich halt nicht ... wenn jemand ein Stichwort für mich hat mit dem ich weitergoogeln kann wäre ich echt super glücklich.

Also ich habe jetzt den Stand erreicht, dass ich über Greasemonkey, dass Applet in die Seite des Providers (selbstverständlich nur lokal bei mir) einbinde.
Java:
var bodytag = document.getElementsByTagName('body')[0];
    var newapplet = document.createElement("APPLET");
   
    newapplet.archive = "test_applet_grease.jar"
    newapplet.code = "test_applet_grease.Test_applet_grease.class";
    //newapplet.codeBase ="http://localhost/";
    newapplet.codeBase = "file:///E:/";
        
    var h1first = document.getElementsByTagName('H1')[0];
    bodytag.insertBefore(newapplet, h1first);

HTML:
 <applet codebase="file:///E:/" code="test_applet_grease.Test_applet_grease.class" archive="test_applet_grease.jar"></applet>

Seltsamer weise springt Java nun gar nicht mehr an ... das System versucht also noch nicht mal das Applet zu starten. Ändere ich Codebase auf "http://localhost/" kommt eine ClassNotFoundException was auch korrekt ist, da ich ja auf meiner lokalen Maschine keinen Webserver betreibe. Aber mit "File.." passiert nüschts ... in der Konsole rührt sich nix.

Kopiere ich den kompletten von Greasemonkey modifizierten Code in eine lokale html datei funktionierts wieder einwandfrei egal wo die Datei auf meinem Rechner liegt.

Hat jemand ne Idee?

Gruss

Holger aka sharky
 
So hab jetzt mal den Mini Webserver 2010 von Aidex Software installiert und den Codebase-Eintrag von "File..." auf "Http://localhost/" geändert und nun funktionierts.
Das ist zwar im Grunde genommen zufrieden stellend aber die direkte Angabe über "File.." hätte mir besser gefallen.
Wenn mal jemand ne Idee hat, warum das System vorher noch nicht mal versucht hat, das Applet zu starten, kann er/sie mich ja gerne per PM anschreiben.
 

Zurück
Oben