2013-03-20 11 views
6

W JavaFX mogę dołączyć słuchacza do pracownika obciążenia dla WebEngine jak ten:Jak uzyskać JavaFx WebEngine do zgłaszania błędów w szczegółach?

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()); 
     } 
    }); 

Jednak gdy próbuję załadować dokument pod adresem https takich jak:

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

wszystko mi się wydrukować na konsoli to:

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

(Ten sam adres https w Firefoksie lub Chrome daje mi stronę logowania)

Czy ktoś wie, jak mogę uzyskać bardziej szczegółowe raporty z JavaFx WebEngine. Nie chcę po prostu wiedzieć, że to się nie udało - muszę wiedzieć, dlaczego. Mogę odgadnąć mój błąd jest SSL/certyfikat/HTTPS związanych ale obecnie jestem całkiem w ciemności, która część SSL spowodował go do „FAIL”

Odpowiedz

4

najlepsze jakie kiedykolwiek otrzymałem, był:

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

ale to nie pomogło.

(Nasz błąd był spowodowany brakującym CookieStore, wydaje się nie dostać je za darmo - i trzeba ustawić domyślną: http://docs.oracle.com/javase/7/docs/api/java/net/CookieHandler.html)

+0

Gdzie umieściłeś ten kod? Czy w narzędziu do ładowania stron należy załadować detektor zmian stanu właściwości pracownika? – jewelsea

+0

Tak w ChangeListener jak w 'webEngine.getLoadWorker(). StateProperty(). AddListener ( new ChangeListener () ..... –

4

Czy próbowałeś następujące:

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

Można użyć com.sun.javafx.webkit.WebConsoleListener. Minusem jest to, że jest to wewnętrzne API JRE.

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