# WebBrowser jdic



## PollerJava (29. Okt 2007)

Hallo,


Ich habe in meiner Applikation einen WebBrowser (https://jdic.dev.java.net/) und der funktioniert auch sehr gut nur bin ich jetzt dabei, meine Applikation in ein Webstart- Programm umzuwandeln. Starte ich mein Programm über Webstart, funktioniert der Browser nicht mehr (es wird nur das JPanel angezeigt, wo der WebBrowser drauf ist),
Ich hab die jar-Datei jdic.jar eingebunden ins Webstart (und auch signiert) 


Hat jemand eine Idee, was ich machen kann,


```
try {
                    webBrowser.setURL(new URL("http://www.google.at"));       
                    } 
                catch (MalformedURLException e) 
                    {
                    e.printStackTrace();
                    }
```


----------



## PollerJava (29. Okt 2007)

Hallo nochmal,

hab wieder mein klassisches Problem, wenn ich die Applikation mit Webstart starte, dann findet er IeEmbed.exe nicht, welche aber zum Starten des Browsers notwendig ist,
Weiß jemand, wo ich diese Datei hingeben muss, damit mein Webstart diese exe-Datei findet?
Wenn ich meine Applikation lokal starte (also die jar-Datei), dann muss ich unter dem Ordner dist  einen Ordner lib erzeugen und dorthin geben ich dann jdic.jar und eben IeEmbed.exe -> dann funktioniert mein Webbrowser, ansonsten bekomme ich folgende Fehlermeldung:


```
Can't execute the native embedded browser. Error message: Cannot run programm 
"C:\SimpleBrowser\dist\lib\IeEmbed.exe": CreateProcess error=2, Das System kann die angegebene Datei nicht finden
```

Aber ich weiß eben nicht, wo ich die IeEmbed.exe beim Webstart hintun soll.

Vielen Dank für Eure Antworten,

lg


----------



## thE_29 (29. Okt 2007)

Der JDIC ist halt kein richtiger Browser!

Der nutzt IE oder FF und Co! Und warum sollte so eine App als WebApp sinnvoll sein? Irgendwie musste ich mir das ja auch mal runterladen ==> ich hab sowieso nen Browser


----------



## tuxedo (29. Okt 2007)

@PollerJava

Sag mal: Kannst du 1 und 1 nicht zusammen zählen? Das ist doch mehr oder weniger analog zu deinem Problem mit der XML-File in der du deine Konfig speicherst ...


----------



## PollerJava (29. Okt 2007)

alex0801 hat gesagt.:
			
		

> Das ist doch mehr oder weniger analog zu deinem Problem mit der XML-File in der du deine Konfig speicherst ...




Ja schön wärs, aber die Konfig- datei hol ich mir so:


```
states = readStates(cl.getResource("Konfiguration/KonfigComponents.xml").toString());
```

und beim WebBrowser muss ich mir die exe- Datei ja nirgends holen -> das Laden der IeEmbed.exe steht nirgends im  Code, das wird irgendwie anders geladen und deshalb mein Problem,

lg


----------



## PollerJava (29. Okt 2007)

Hier hab ich ein kleines Programm mit dem selben problem hochgeladen:

http://www.java-forum.org/de/userfiles.php?msgcode=1

vielleicht ist ja jemand interessiert und bekommts hin.
Mit einer IDE funktionierts einwandfrei nur über webstart funktioniert der webbrowser nicht,

lg


----------



## tuxedo (29. Okt 2007)

Naja, die .EXE wird halt von der Lib benutzt. Dass du die .EXE in deinem Code wie die XML laden sollst hat ja auch niemand geschrieben. Dennoch:

Die EXE solltest du behandeln wie eine Library die vllt. noch DLLs benutzt. Ergo sind wir nach wie vor bei ein und demselben Problem. Nämlich dem Fakt dass die EXE vom Server runtergeladen werden muss und dann im korrekten Pfad zu finden sein muss. 

- Alex


----------



## tuxedo (29. Okt 2007)

Und wieder einmal könnt ich ne symbolische, virtuelle Ohrfeige verteilen. 

Bist du denn noch nicht auf die Idee gekommen mal google mit "jdic webstart" zu füttern?

Denn da landet man unumgänglich bei der Doku zu jdic, die ausführlich beschreibt wie man das ganze mit Webstart hinkriegt.

*kopfschüttel* RTFM


----------



## PollerJava (29. Okt 2007)

Ja, ich hab mir das auch schon durchgelesen, in jdic_native.jar eben die *.dll und die *.exe rein, dann in der jnlp- Datei so angeben:


```
<resources locale="" os="Windows">
    <nativelib download="eager" href="dist/lib/jdic_native.jar" version=""/>
  </resources>
```

und dann solls funktionieren, aber das tut es eben nicht und deshalb stehe ich jetzt an, ich hab keine Ahnug wiese.
Hab mir auch schon das Beispiel https://jdic.dev.java.net/files/documents/880/62106/web_start_example.zip  angesehen, das aber leider auch nicht funktioniert,

Vielleicht hat ja jemand noch einen Tipp für mich,
Wäre euch sehr dankbar,

lg


----------



## PollerJava (29. Okt 2007)

alex0801 hat gesagt.:
			
		

> Denn da landet man unumgänglich bei der Doku zu jdic, die ausführlich beschreibt wie man das ganze mit Webstart hinkriegt.



Du meinst wahrscheinlich diesen Link hier:

https://jdic.dev.java.net/documentation/deployment.html  ????

den hab ich mir durchgelesen, aber der ahndelt von Applets und ich bin mir nicht sicher, ob das für applikationen auch gilt?

lg


----------



## tuxedo (29. Okt 2007)

So langsam aber sicher zweifle ich an dir... Hast du die Seite mal nach unten gescrollt? Nach etwa 50% des Scrollbalkens landest du nämlich bei der Beschreibung für Webstart ...

Zwischenfrage: Kriegst du eigtl Geld für das was du da programmierst?


----------



## PollerJava (29. Okt 2007)

Arbeite es grade durch, die Störung (mein Unvermögen) tut mir leid,
Vielen Dank für die Hilfe,

lg


----------



## tuxedo (29. Okt 2007)

Von Störung ist keine Rede.

Eher von "Ungeduld" oder "Ich kann google nicht bedienen" oder "Wieso zum teufel ist die Seite zu lang, ich will nicht so weit nach unten scrollen und schauen ob vielleicht da etwas zu webstart steht, ich frag lieber im Forum."

- Alex


----------



## PollerJava (29. Okt 2007)

Hallo nochmal,

ich hab jetzt alles so gemacht wie in der Doku, bekomme aber eine Fehlermeldung (kann diese lesen, hab auch in google nachgesehen aber kann nichts anfangen mit ihr)




```
java.lang.reflect.InvocationTargetException
	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)
Caused by: java.lang.ExceptionInInitializerError
	at org.jdesktop.jdic.browser.MsgClient.<init>(Unknown Source)
	at org.jdesktop.jdic.browser.NativeEventThread.<init>(Unknown Source)
	at org.jdesktop.jdic.browser.WebBrowser.<clinit>(Unknown Source)
	at net.ppos.component.MyBrowser.generateBrowser(MyBrowser.java:42)
	at netppos.pack.Control.<init>(Control.java:61)
	at net.ppos.pack.MainFrame.setLoginPfad(MainFrame.java:22)
	at net.ppos.pack.MainFrame.<init>(MainFrame.java:17)
	at net.ppos.pack.MainFrame.main(MainFrame.java:27)
	... 9 more
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.jdic)
	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.checkLink(Unknown Source)
	at java.lang.Runtime.loadLibrary0(Unknown Source)
	at java.lang.System.loadLibrary(Unknown Source)
	at org.jdesktop.jdic.browser.internal.WebBrowserUtil.<clinit>(Unknown Source)
	... 17 more
```


----------



## thE_29 (29. Okt 2007)

Du musst dein WebStart Dingens signieren lassen! Such mal nach Applet signieren oder jarsigner!


----------



## PollerJava (29. Okt 2007)

Hab ich gemacht, ich hab alle meine jar- Files signiert und bekomme trotdem den Fehler,


----------



## thE_29 (29. Okt 2007)

Du musst auch das jar file mit den lib signieren lassen!

Einfach alles und jedes jar File was bei dir vor kommt (in der jnlp Datei) muss mit dem GLEICHEN Zertifikat signiert sein!


----------



## HoaX (29. Okt 2007)

ich würde ehr behaupten dass er im jnlp kein all-permissions tag hat. fehlende signatur sollte schon beim laden angemotzt werden


----------



## Guest (29. Okt 2007)

Ja das hab ich aber gemacht, ich hab alles (jede jar) signiert und hab auch <all-permission> in meiner jnlp,
keine Ahnung was da schief läuft.

lg


----------



## PollerJava (30. Okt 2007)

Nö, ich bekomms nicht hin,
Vielleicht kanns ja wer probieren ( http://www.java-forum.org/de/userfiles.php?msgcode=1 -> ist ein ganz kleines Projekt mit ganz wenig Zeilen) ich hab mich strikt nach der Beschreibung https://jdic.dev.java.net/documentation/deployment.html gehalten,
keine Ahnung, was da los ist, komm nicht mehr weiter,

Vielleicht hätte ja wer das interesse und die Zeit kurz drüber zu schauen,

Vielen Dank 

lg


----------



## PollerJava (30. Okt 2007)

Kennt jemand vielleicht eine Alternative zu jdic?
mit dem jdic komm ich nicht mehr weiter, es will einfach nicht


----------



## PollerJava (30. Okt 2007)

Ja leider muss ich aufgeben,
Es ist wie verhext, ich bekomme keine Fehlermeldung, er findet den IeEmb.exe und sonst auch alles wie beim normalen starten usw. aber es wird kein Browser angezeigt -> beim Webstart ladet er die seite nicht, keine Ahnug wieso,


```
webBrowser.addWebBrowserListener(
            new WebBrowserListener() {
            boolean isFirstPage = true;
                        
            public void downloadStarted(WebBrowserEvent event) {
                ta.setText(ta.getText() + ", Ich lade gerade");
                System.out.println("Ich starte den download");
                ;}
            public void downloadCompleted(WebBrowserEvent event) {;}
            public void downloadProgress(WebBrowserEvent event) {
                ta.setText(ta.getText() + ", es wird downgeloadet");
                System.out.println("Es wird downgeloadet");
                ;}
            public void downloadError(WebBrowserEvent event) {
                ta.setText(ta.getText() + ", downloadError");}
            public void documentCompleted(WebBrowserEvent event) {
                //System.out.println("Content: " + webBrowser.getContent());
                //ta.setText(ta.getText() + webBrowser.getContent());
                // Uncomment below code to test getContent()/setContent()/
                // executeScript() APIs.
                // As the setContent() call will invoke this event, which falls
                // into a loop, so check if this event is fired by the first
                // loaded page.
                
                
            }
            public void titleChange(WebBrowserEvent event) {;}  
            public void statusTextChange(WebBrowserEvent event) {;}        
        });

        
            
        try {
            webBrowser.setURL(new URL("http://www.google.at"));
            System.out.println("Klasse SimpleBrowser: " + webBrowser.getBrowserBinary() + ", " + webBrowser.getStatus().isForwardEnabled());
            System.out.println(bu.getBrowserPath() + ", " +  webBrowser.getContent() + ", " + webBrowser.getBrowserBinary() + ", " + webBrowser.getURL() + ", " + webBrowser.getStatus() + ", " + webBrowser.getPeer());
            ta.setText(ta.getText() + ", " + bu.getBrowserPath() + ", " +  webBrowser.getContent() + ", " + webBrowser.getBrowserBinary() + ", " + webBrowser.getURL() + ", " + webBrowser.getStatus() + ", " + webBrowser.getPeer());
            // Below Chinese website tests unicode support.
            //webBrowser.setURL(new URL("http://www.google.com/intl/zh-CN/"));
            
            // Print out debug messages in the command line.
            //webBrowser.setDebug(true);
        } catch (Exception e) {
            ta.setText(ta.getText() + " es ist in catch ein Fehler aufgetreten");
            System.out.println(e.getMessage());
        }
```


----------



## PollerJava (30. Okt 2007)

So, habs jetzt -> unglaublich aber es funktioniert und jetzt bin ich auch webstart- Profi.

lg und danke für die Antworten,


----------



## thE_29 (31. Okt 2007)

Und was war jetzt der Fehler?


----------



## PollerJava (31. Okt 2007)

NetBeans schreibt bei "codebase" standardmäßig $$codebase rein und dann kann ich nicht einfach auf Start webstart gehen,
das war eigentlich alles und dass er mir bei "start webstart" immer eine neue jar- datei erstellt und dadurch die alte überschrieben wurde,
es war also ein reines netbeans- Problem aber sehr lehrreich,


----------

