2013-03-20 7 views
6

In JavaFx ich ein Zuhörer an die Last Arbeiter für eine WebEngine wie folgt anhängen:Wie kann JavaFx WebEngine Fehler im Detail melden?

webEngine.getLoadWorker().stateProperty().addListener(
     new ChangeListener<Worker.State>() { 
     public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) {        
      System.out.println("webEngine result "+ newState.toString()); 
     } 
    }); 

Allerdings, wenn ich versuche, bei einem https Adresse ein Dokument zu laden, wie zum Beispiel:

https://SomeLocalMachine.com:9443/jts/admin#action=com.ibm.team.repository.manageUsers

alles, was ich bekommen auf der Konsole ausgedruckt ist:

webEngine result READY 
webEngine result SCHEDULED 
webEngine result RUNNING 
webEngine result FAILED 

(Die gleiche HTTPS-Adresse in Firefox oder Chrome ruft mir eine Login-Seite)

Weiß jemand, wie ich detailliertere Berichte aus der JavaFx WebEngine bekommen kann. Ich möchte nicht nur wissen, dass es fehlgeschlagen ist - ich muss wissen warum. Ich kann erraten mein Fehler SSL/Zertifikat/HTTPS verwandt, aber zur Zeit bin ich ganz in der Dunkelheit, der ein Teil des SSL es verursacht ‚FAIL‘

Antwort

4

Das beste, was wir je bekommen haben war:

if (webEngine.getLoadWorker().getException() != null && newState == State.FAILED) { 
    exceptionMessage = ", " + webEngine.getLoadWorker().getException().toString(); 
} 

aber das half nicht.

(Unser Fehler durch ein fehlendes CookieStor verursacht wurde, es scheint, dass Sie nicht ein kostenlos bekommen - und setzen müssen, um eine Standard: http://docs.oracle.com/javase/7/docs/api/java/net/CookieHandler.html)

+0

Wo haben Sie diesen Code abgelegt? Ändern Sie in der Web-Engine-Ladezustandseigenschaft den Listener? – jewelsea

+0

Ja in ChangeListener wie in 'webEngine.getLoadWorker(). StateProperty(). AddListener ( neuer ChangeListener () ..... –

4

Haben Sie versucht, die folgenden:

engine.getLoadWorker().exceptionProperty().addListener(new ChangeListener<Throwable>() { 
    @Override 
    public void changed(ObservableValue<? extends Throwable> ov, Throwable t, Throwable t1) { 
     System.out.println("Received exception: "+t1.getMessage()); 
    } 
}); 
13

Sie com.sun.javafx.webkit.WebConsoleListener verwenden können. Nachteil ist, dass es JRE interne API ist.

WebConsoleListener.setDefaultListener(new WebConsoleListener(){ 
    @Override 
    public void messageAdded(WebView webView, String message, int lineNumber, String sourceId) { 
     System.out.println("Console: [" + sourceId + ":" + lineNumber + "] " + message); 
    } 
});