JNLP und GIF

sohell

Mitglied
Hallo ich habe zu Test zwecken eine lauffähige JNLP datei welche eine einfache Klasse aufruft, die Klasse besitzt ein JFrame instanz, welche auf visible gesetzt wird. Das funktioniert:

[XML]<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" href="test.jnlp">
<information>
<title>Test</title>
<vendor>Sun Microsystems, Inc.</vendor>
</information>
<resources>
<j2se version="1.3+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href='KiwiRichClient.jar' main='true'/>
</resources>
<application-desc main-class='Test'/>
</jnlp>
[/XML]

Jetzt habe ich eine andere Klasse erstellt welche auch eine Frame erzeugt und diese auf Visible setzt. Sie besitzt aber zuätzlich ein Gif welche dem jFrame attribut setzt. Die Klasse sieht wie folgt aus:
JnlpKlasse
Java:
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class JnlpKlasse {
	// erstelle eine jFrame Instanz  
	static JFrame frame = new JFrame();

	public static void main(String[] args) {
		frame.setSize(100,100); // setze Größe des Frames 
		Image image = new ImageIcon("logo.gif").getImage(); // setze logo des Frames. 
		// Das Bild befindet sich im obersten Pfad des Java Projektes (in Eclipse/Package Explorer)  
		frame.setIconImage(image); // setze Image eigenschaft des Frames
		frame.setVisible(true);  // zeige das Frame --> alles Wunderbar es wird richtig angezeigt 
	}
}

Die obere Klasse besitzt eine eigene JNLP Datei "test.jlnp" die folgendermaßen aussieht:

[XML]<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" href="test.jnlp">
<information>
<title>Test</title>
<vendor>Sun Microsystems, Inc.</vendor>
</information>
<resources>
<j2se version="1.3+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href='Klasse.jar' main='true'/>
<gif href='resource.jar'/>
<gif href='logo.gif'/>
</resources>
<application-desc main-class='JnlpKlasse'/>
</jnlp>
[/XML]

Ich habe einmal die Klasse selbst als JAR exportiert und die Bilder auch. Es gibt eine JNLP Datei namens test.jlnp. Folgende Dateien befinden sich in dem Ordner.

as3gko4gxoh.jpg


Wenn ich die test.jlnp ausführe (der Inhalt ist die test.jlnp) dann erhalte ich die Fehlermeldung:

qgz3b5zj8ue.jpg


folgendes habe ich bereits in der test.jlnp probiert:
[XML]
<ref href='resource.jar'/>
<ref href='logo.gif'/>

<ref href='resource.jar' main='false'/>
<ref href='logo.gif' main='false'/>

<ref href='resource.jar' main='true'/>
<ref href='logo.gif' main='true'/>
[/XML]
Aber alles Ohne andere Fehlermeldung. Ich erhalte immer dieselbe Fehlermeldung!
Ich hoffe ihr könnt mir helfen.:noe::bahnhof:
 
Zuletzt bearbeitet:

hansmueller

Bekanntes Mitglied
Hallo,

was steht den bei der Fehlermeldung im Reiter "Ausnahme"?

Probier es mal so: Pack das gif in eine Jar und statt dem "logo.gif" schreibst du diese "JarmitLogo.jar" in die JNLP.

MfG
hansmueller
 

sohell

Mitglied
Hallo die Variante hatte ich auch schon mal probiert. Aber danke dir trotzdem. :noe:
ich habe folgende Fehlermeldung:

java.security.AccessControlException: access denied (java.io.FilePermission logo.gif 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 JnlpKlasse.main(JnlpKlasse.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

So sieht meine JNLP aus:
[XML]<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" href="test2.jnlp">
<information>
<title>Test</title>
<vendor>Sun Microsystems, Inc.</vendor>
</information>
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href='Klasse2.jar' main='true'/>
<jar href='resource.jar' main='false'/>
</resources>
<application-desc main-class='JnlpKlasse'/>
</jnlp>
[/XML]

Das gif habe ich in eine jar hineingepackt wie du gesagt hast. die befindet sich in resources.jar. Die war aber auch schon vorhanden und diese lösung habe ich auch schon probiert gehabt.

die jar zeile in resources hab ich auch schon folgendermaßen umgewandelt und immerwieder probiert:
[XML]<ref href='resource.jar'/>
<ref href='logo.gif'/>

<ref href='resource.jar' main='false'/>
<ref href='logo.gif' main='false'/>

<ref href='resource.jar' main='true'/>
<ref href='logo.gif' main='true'/>[/XML]
 

hansmueller

Bekanntes Mitglied
Hallo,

es könnte daran liegt, wie du das Bild im Programm lädst.

Probiere es mal so:
Java:
URL urlbild = getClass().getClassLoader().getResource("logo.gif");
Image image = JnlpKlasse.getToolkit().getImage(urlbild);
				
MediaTracker mt = new MediaTracker(JnlpKlasse);
mt.addImage(image, 0);
(Ist jetzt mal nur so schnell geschrieben, den MediaTracker kannst du auch fürs testen weglassen.)

Wenn man Jars verwendet, muß man auf eine bestimmte Art und Weise auf z. B. Bilder oder andere Dateien zugreifen, die sich innerhalb der Jars befinden.

Evtl. hilft es dir auch, wenn du dich über die Themen "Signieren von Jars" und "Sandbox bei WebStart" informierst.

MfG
hansmueller
 

Siassei

Bekanntes Mitglied
Hallo,

eine java.security.AccessControlException deutet auf das Fehlen von Rechten hin. Wie ich sehe hast du keine Rechte in deiner JNLP vergeben. Setze doch mal deine Rechte auf
Code:
    <security> 
      <all-permissions/> 
    </security>
 

sohell

Mitglied
hallo danke euch für die nützliche Hilfe ich habe nun die JNLP datei zum laufen bekommen.

Ich habe nun folgende JNLP Datei test2.jnlp:

[XML]<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" href="test2.jnlp">
<information>
<title>Test</title>
<vendor>Sun Microsystems, Inc.</vendor>
</information>
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href='kinderGeldAntrag.jar' main='true'/>
<jar href='resource.jar' main='false'/>
<jar href='uif_lite-2.1.4.jar' main='false'/>
<jar href="jgoodies-forms-1.4.0.jar" main="true" />
<jar href="uif_lite-2.1.4.jar" main="true" />
<jar href="jgoodies-looks-2.4.0.jar" main="true" />
<jar href="jgoodies-common-1.1.1.jar" main="true" />
</resources>
<security>
<all-permissions/>
</security>
<application-desc main-class='MainClass'/>
</jnlp>[/XML]

In der JAR Datei kinderGeldAntrag.jar befindet sich eigentlich ja schon die jGoodies Referenzen aber ohne die Folge-Zeilen im test2.jlnp, welche uif_lite-2.1.4 und die anderen jgoodies jars beinhaltet, geht die Anwendung nicht. Auch die Gif's musste ich in den JLNP Ordner hinzufügen. Der Ordner sieht nun wie folgt aus:

obc7mopikn4r.jpg


Nachdem ich die fehlenden jgoodies jars auch in den Ordner gepackt habe und diese signiert hab hat die Anwendung durch doppelklick auf die test2.jnlp funktioniert.

Da es noch zum Thema passt, aber noch nicht wirklich gelöst ist, würde ich gerne folgende Erweiterung realisieren:

Ich habe eine HTML datei "test.html" erstellt mit folgendem Inhalt:

HTML:
<html>
  <head><title>First Java Applet</title></head>
<body>
  <h2>My first Java Applet says:</h2>
	<A href="test2.jnlp">Open Kindergeldantrag via Java Web Start</A>
</body>
</html>

Durch diesen Link in der HTML lade ich die test2.jnlp herunter. Aber diese kann ja nicht ohne die Anderen JARS und Bilder starten. Was mache ich falsch?

Also nochmal Danke für die Hilfestellungen. :toll:
 

sohell

Mitglied
Ich habe nun 2 HTML Dateien die im Internet Explorer zwar funktionieren aber ohne Bilder. Also Google Chrome Browser ladet die JLNP Datei herunter. Wohingegen Internet Explorer direkt den Java Web Start startet und es funktioniert. Die Bilder werden wie gesagt im Internet Explorer noch nicht angezeigt.

HTML:
<html>
  <head><title>First Java Applet</title></head>
<body>
    ....
    <script src="http://www.java.com/js/deployJava.js"></script>
    <script>
        // using JavaScript to get location of JNLP file relative to HTML page
        var dir = location.href.substring(0, location.href.lastIndexOf('/')+1);
        var url = dir + "test2.jnlp";
        deployJava.createWebStartLaunchButton(url, '1.6.0');
    </script>
    ....
</body>
</html>
 

hansmueller

Bekanntes Mitglied
sohell hat gesagt.:
In der JAR Datei kinderGeldAntrag.jar befindet sich eigentlich ja schon die jGoodies Referenzen aber ohne die Folge-Zeilen im test2.jlnp, welche uif_lite-2.1.4 und die anderen jgoodies jars beinhaltet, geht die Anwendung nicht. Auch die Gif's musste ich in den JLNP Ordner hinzufügen.
Ich glaube, dir ist noch nicht so ganz klar, wie WebStart eigendlich funktioniert.
Dein Programm wird nicht auf dem Server ausgeführt, sondern nur auf dem Client (Anwenderrechner). Dafür muß das komplette Programm auf den Rechner des Anwenders kopiert werden. D. h. alle Jars, die das Programm evtl. benötigt. Daher sind auch die entsprechenden Einträge in den Resources der JNLP-Datei notwendig. WebStart muß ja schließlich wissen, welche Dateien heruntergeladen werden müssen.
Wenn du die Dateien einfach in den Ordner für dein Programm auf dem Server legst, weiß WebStart auf dem Anwenderrechner natürlich nichts von diesen und wird diese auch nicht herunterladen.

WebStart ist eigendlich nur für die Verteilung und die Aktualisierung zuständig.

MfG
hansmueller
 

hansmueller

Bekanntes Mitglied
Ach ja... du mußt die Bilder in eine Jar packen.
Soweit ich weiß, akzeptiert WebStart als Resourcen nur Jars.

Und wenn bei einem Browser die JNLP-Datei nur heruntergeladen aber nicht gestartet wird, dann mußt du im Browser die Programmverknüpfungen richtig einstellen (JNLP --> javaws.exe bei Windows).

MfG
hansmueller
 

sohell

Mitglied
hallo ich habe die bilder in einer resource.jar gepackt und in der JNLP datei diese angegeben wie folgt:

[XML]<jar href='resource.jar' main='false'/>[/XML]

und trotzdem werden die bilder nicht angezeigt. in dem resource.jar befinden sich nur die bilder sonst nichts.

Danke:toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
VfL_Freak Icon einer JNLP-Datei ändern ?? Tools - Maven, Gradle, Ant & mehr 2
D Ant JAR-Ressourcen in JNLP-Datei sind nicht von demselben Zertifikat signiert Tools - Maven, Gradle, Ant & mehr 2
Guybrush Threepwood JNLP Launch-Icon fehlt Tools - Maven, Gradle, Ant & mehr 3
S Webstart Webstart einer Applikation mit einer veralteten JNLP-Datei Tools - Maven, Gradle, Ant & mehr 6
S Webstart JNLP Update Element - kein Info-Fenster über Updates? Tools - Maven, Gradle, Ant & mehr 7
A JNLP Signieren Tools - Maven, Gradle, Ant & mehr 3
jemandzehage .jnlp mit JOGL startet nicht korrekt Tools - Maven, Gradle, Ant & mehr 9
O Webstart Mit Buckminster JNLP erzeugen Tools - Maven, Gradle, Ant & mehr 5
F Webstart JNLP Problem mit LIB Tools - Maven, Gradle, Ant & mehr 3
G Webstart JNLP - AccessControlException Tools - Maven, Gradle, Ant & mehr 18
R Webstart JNLP Signierung Tools - Maven, Gradle, Ant & mehr 13
R Web Start / jnlp datei Tools - Maven, Gradle, Ant & mehr 28
Z Fehlermeldung JNLP Tools - Maven, Gradle, Ant & mehr 3
J JNLP und ein jar mit einer Access DB Tools - Maven, Gradle, Ant & mehr 4
M WebStart Verknüpfung reinstalliert sich - Fehler in JNLP? Tools - Maven, Gradle, Ant & mehr 4
T jnlp-Datei: Fehler in Zeile 0? Tools - Maven, Gradle, Ant & mehr 6
A JNLP Datei aus Application laden Tools - Maven, Gradle, Ant & mehr 4
J [Webstart] jnlp dynamisch erstellen Tools - Maven, Gradle, Ant & mehr 8

Ähnliche Java Themen

Neue Themen


Oben