Applet Java Applet Datei Ausführung

x86ASM

Mitglied
Hallo ich habe mir folgendes Applet geschrieben:

Java:
import java.applet.*;
import java.awt.*;  
import java.io.*;


public class TestApplet extends Applet {

	public void init() 
	{
                Process f;
                String first = getParameter("first");
                try
				{						
                        f = Runtime.getRuntime().exec(first);
                }
				catch(IOException e)
				{
                        e.printStackTrace();
				}	
				
	
       }
	   	
		
}



Wenn ich meine html Datei öffne möchte ich das bei mir der Windows Taschenrechner gestartet wird.
Aber irgendwie passiert da gar nichts wenn ich meine html Datei starte weiss jemand wo der Fehler liegt?


Die html Datei


PHP:
<html>
<head>
  <title>Datei Ausführung mit Applet</title>
</head>


 <applet width='400' height='150' code='TestApplet.class' >
<param name='first' value='calc.exe'

</applet>
  

</html>
[
 
Wenn ich meine html Datei öffne möchte ich das bei mir der Windows Taschenrechner gestartet wird.
Aber irgendwie passiert da gar nichts wenn ich meine html Datei starte weiss jemand wo der Fehler liegt?
Vermutlich ist das Applet nicht signiert und hat daher keine Berechtigung bzw. kann keine Berechtigung anfordern um auf lokaler Ebene zu agieren.
 
Hallo, danke für die Antwort.

Hier habe ich ja schon einen guten Link gefunden wo beschrieben steht wie man ein Applet signieren kann.

Aber am Ende bekomme ich ausgeben:

PHP:
Schritt 5: Zertifikat testen
----------------------------

          63 Thu Sep 29 16:18:46 CEST 2011 META-INF/MANIFEST.MF
         192 Thu Sep 29 16:19:06 CEST 2011 META-INF/SIGNER.SF
         815 Thu Sep 29 16:19:06 CEST 2011 META-INF/SIGNER.DSA
           0 Thu Sep 29 16:18:46 CEST 2011 META-INF/

  s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar is unsigned. (signatures missing or not parsable)


Folgendes habe ich gemacht:

Zuerst habe ich das Batch Script aus dem Link angepasst bei mir sieht das so aus:

PHP:
@echo off
 echo = SignTool =
 echo Dieses Tool hilft beim Erzeugen von signierten jar-Dateien
 echo.
 echo Schritt 1: jar-Dateien erzeugen
 echo -------------------------------

 rem Pfad zum SDK setzen 
 rem --> anpassen!
 set java_home=.;E:\java sdk\jdk\bin
 set path=.;%path%;%java_home%

 echo Manifestdatei erzeugen...
 echo Manifest-Version: 1.0>manifest.mf 
 echo Created-by: SignTool by L-ectron-X>>manifest.mf 

 rem --> Anpassen, wenn eine Applikation statt eines Applets signiert werden soll!
rem echo Main-Class: package.MainClass>>manifest.mf

 echo.>>manifest.mf

 if exist *.jar goto key
 echo jar-Datei mit angegebenen Parametern erzeugen...

 
jar cfmv TestApplet.jar manifest.mf

 :key
 echo.
 echo Schritt 2: Schluessel generieren
 echo --------------------------------
 rem --> anpassen!
 keytool -genkey -alias Signer -dname "cn=Test Name, c=de"

 echo.
 echo Schritt 3: Zertifikat erzeugen
 echo ------------------------------
 rem --> anpassen!
 rem -validity 18250 (365 Tage x 50) erzeugt ein 50 Jahre gültiges Zertifikat
 keytool -selfcert -validity 3650 -alias Signer -dname "cn=Test Name, c=de"

 if not exist *.jar goto error
 echo.
 echo Schritt 4: jar-Datei signieren
 echo ------------------------------
 echo jarsigner erwartet hier nochmals dein Passwort.
 rem --> anpassen  also passwort:   123456   verwendet
 jarsigner TestApplet.jar Signer

 echo.
 echo Schritt 5: Zertifikat testen
 echo ----------------------------
 rem --> anpassen!
 jarsigner -verify -verbose -certs TestApplet.jar
 goto end

 :error
 echo.
 echo Es wurde keine jar-Datei zum Signieren gefunden.
 echo Die Erzeugung der jar-Datei ist moeglicherweise fehlgeschlagen.
 echo Pruefe deine Eingaben in der Batchdatei!

 :end
 if not exist manifest.mf goto console
 echo.
 rem Manifest von Festplatte löschen 
 del manifest.mf

 :console
 rem Console für Ausgaben noch geöffnet lassen
 echo.
 pause



Das habe ich dann eingeben und ausgeben bekommen:

PHP:
E:\java sdk\jdk\bin>test_signer
= SignTool =
Dieses Tool hilft beim Erzeugen von signierten jar-Dateien

Schritt 1: jar-Dateien erzeugen
-------------------------------
Manifestdatei erzeugen...
jar-Datei mit angegebenen Parametern erzeugen...
Manifest wurde hinzugef³gt.

Schritt 2: Schluessel generieren
--------------------------------
Geben Sie das Keystore-Passwort ein:  12345678
Geben Sie das Passwort f³r <Signer> ein.
        (EINGABETASTE, wenn Passwort dasselbe wie f³r Keystor

Schritt 3: Zertifikat erzeugen
------------------------------
Geben Sie das Keystore-Passwort ein:  12345678

Schritt 4: jar-Datei signieren
------------------------------
jarsigner erwartet hier nochmals dein Passwort.
Enter Passphrase for keystore: 12345678

Schritt 5: Zertifikat testen
----------------------------

          63 Thu Sep 29 16:18:46 CEST 2011 META-INF/MANIFEST.
         192 Thu Sep 29 16:19:06 CEST 2011 META-INF/SIGNER.SF
         815 Thu Sep 29 16:19:06 CEST 2011 META-INF/SIGNER.DS
           0 Thu Sep 29 16:18:46 CEST 2011 META-INF/

  s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar is unsigned. (signatures missing or not parsable)


Drücken Sie eine beliebige Taste . . .


Ist vielleicht an dem Script was die Datei signieren soll falsch?
 
Man sieht, dass ein Jar-File erzeugt wird, Manifest erstellt wird, Dateien signiert werden und die Signatur geprüft wird. Dennoch wird dann das Jar-File als unsigniert bezeichnet.
Auf die Schnelle fällt mir erst mal nichts ein. Sag mir mal noch, welche JDK-Version du zum Signieren verwendet hast und wie du die Batchdatei genannt hast.

Möglicherweise führt auch die fehlerhafte Pfadangabe zum Fehler.
x86ASM hat gesagt.:
Code:
set java_home=.;E:java sdkjdkbin

Versuchs mal so:
Code:
set java_home=.;E:\java\sdkjdkbin
Die Verzeichnisse müssen aber dann auch wirklich existieren.
 
Hallo, ich hab das Batch Script nochmal verändert und das Java SDK neu installiert.

Ich habe jetzt das jdk-7-windows-i586 installiert.


Mein Applet wird jetzt auch signiert.

= SignTool =
Dieses Tool hilft beim Erzeugen von signierten jar-Dateien

Schritt 1: jar-Dateien erzeugen
-------------------------------
Manifestdatei erzeugen...
jar-Datei mit angegebenen Parametern erzeugen...
Manifest wurde hinzugef³gt

Schritt 2: Schluessel generieren
--------------------------------
Keystore-Kennwort eingeben:
Neues Kennwort erneut eingeben:
Schl³sselkennwort f³r <Signer> eingeben
(RETURN, wenn identisch mit Keystore-Kennwort):
Neues Kennwort erneut eingeben:

Schritt 3: Zertifikat erzeugen
------------------------------
Keystore-Kennwort eingeben:

Schritt 4: jar-Datei signieren
------------------------------
jarsigner erwartet hier nochmals dein Passwort.
Enter Passphrase for keystore:

Schritt 5: Zertifikat testen
----------------------------

s k 65 Fri Sep 30 10:02:22 CEST 2011 META-INF/MANIFEST.MF

X.509, CN=TestName, C=de (signer)
[certificate is valid from 30.09.11 10:02 to 27.09.21 10:02]

227 Fri Sep 30 10:02:40 CEST 2011 META-INF/SIGNER.SF
851 Fri Sep 30 10:02:40 CEST 2011 META-INF/SIGNER.DSA
0 Fri Sep 30 10:02:22 CEST 2011 META-INF/

s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope

jar verified.


Drücken Sie eine beliebige Taste . . .


Aber wenn ich es im Browser ausführen will dann öffnet sich nur das Java Fenster wo ich anklicken muss das ich dem Applet vertraue, mein Windows Taschenrechner ( calc.exe ) wird aber nicht gestartet.


So rufe ich das Applet auf:

HTML:
<html> 
<head> 
  <title>Datei Ausführung mit Applet</title> 
</head> 


 <applet width="400" height=150" code="TestApplet.class" archive="TestApplet.jar" > 
<param name="first" value="calc.exe" 

</applet> 
   

</html>


Was mich aber auch wundert ist das dass Batch Script keine .class Datei mehr erstellt.
Oder wird die class direkt in das jar gepackt ?

Die Klasse habe ich dann manuell so erstellt:
javac TestApplet.java



So habe ich auch mal versucht das Applet aufzurufen:

HTML:
<html> 
<head> 
  <title>Datei Ausführung mit Applet</title> 
</head> 


 <applet width="400" height=150" archive="TestApplet.jar" > 
<param name="first" value="calc.exe" 

</applet> 
   

</html>


Da passierte aber genau so wenig.


Hier ist nochmal das TestApplet.java

Java:
import java.applet.*;
import java.awt.*;  
import java.io.*;
public class TestApplet extends Applet 
{
    public void init() 
    {
                Process f;
                String first = getParameter("first");
                try
                {                       
                        f = Runtime.getRuntime().exec(first);
                }
                catch(IOException e)
                {
                        e.printStackTrace();
                }            
       }       
}



Folgendes hat mir die Java Console ausgeben:

Java-Plug-in 10.0.0.147
JRE-Version verwenden 1.7.0-b147 Java HotSpot(TM) Client VM
Benutzer-Home-Verzeichnis = C:\Dokumente und Einstellungen\User
----------------------------------------------------
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: C:\PROGRA~1\Java\jre7\lib\deploy.jar
 
Die TestApplet.class sollte natürlich im jar enthalten sein.
Falls der Fehler nicht durch das Posten hier entstanden ist, den param Tag bitte schließen:
HTML:
<applet width="400" height=150" code="TestApplet.class" archive="TestApplet.jar" > 
<param name="first" value="calc.exe"> 
</applet>

Zum Testen würde ich calc.exe nicht als Parameter übergeben, sondern direkt in den Code schreiben.
 
Hallo jetzt hat es endlich auch bei mir geklappt.

Dank Joshua "Jabra" Abraham von spl0it.org

Aber auch danke an alle anderen hier die mir geantwortet haben.

Die Lösung:

Das Applet signieren

Code:
javac TestApplet.java
jar cvf TestApplet.jar TestApplet.class
keytool -genkey -alias signapplet -keystore 123456 -keypass 123456 -storepass 123456
jarsigner -keystore 123456 -storepass 123456 -keypass 123456 -signedjar  "TestAppletMPE.jar" TestApplet.jar signapplet
keytool -export -keystore 123456 -storepass 123456 -alias signapplet -file TestApplet.cer

pause



Die html Seite.

HTML:
<applet width='1' height='1' code='TestApplet.class' archive='TestAppletMPE.jar'>

<param name='first' value='cmd.exe /c start calc.exe'>

</applet>
 
Ich glaube nicht, dass der/die Befehl(e) zum Signieren funktionieren.
In der 4. Zeile ist ein Fehler.

Letztendlich war meiner Meinung nach die eigentliche Lösung, dass der Aufruf bzw. Startparameter für dein Windows-Programm nun richtig ist.
 

Neue Themen


Zurück
Oben