JavaFX WebView无法加载某些站点

时间:2015-06-11 15:13:15

标签: java webview javafx javafx-8 javafx-webengine

我尝试使用JavaFX的WebView加载此site,但我得到的只是一个空白屏幕。 WebView在其他网站上运行得非常好;它在ACID3上获得100/100并加载其他HTTPS站点而没有任何问题。

我也无法找到该网站的任何特别错误。它具有由适当的CA签署的正确,未过期的证书,以及SSL实验室报告a B grade。我尝试了所有主流浏览器,没有人报告任何证书或SSL相关问题;该网站在所有这些网站上都很好。

非常感谢任何帮助。即便是一个简单的"是的,这个网站也为我打破了#34;或者"这里没问题"会有很多帮助。

我在Windows 8.1 64位上使用Java SDK 1.8.0_45-b14。

1 个答案:

答案 0 :(得分:5)

原因是java.lang.Throwable: SSL handshake failed

一个解决方案可以是:来自这篇文章https://stackoverflow.com/a/5671038/1032167

     TrustManager trm = new X509TrustManager() {
        public X509Certificate[] getAcceptedIssuers() {return null;}
        public void checkClientTrusted(X509Certificate[] certs, String authType) {}
        public void checkServerTrusted(X509Certificate[] certs, String authType) {}
    };

    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, new TrustManager[] { trm }, null);
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

还有帖子,可能是类似的案例:JavaFx Webview JDK 8 can not load self signed certificate

我怎么知道它是SSL handshake failed

webView.getEngine().getLoadWorker().stateProperty().addListener(
            new ChangeListener<Worker.State>() {
                public void changed(ObservableValue ov, 
                      Worker.State oldState, Worker.State newState) {
            System.out.println(webView.getEngine().getLoadWorker().exceptionProperty());
             ...

还向VMOption添加-Djavax.net.debug=all显示

  

URL-Loader-1,处理异常:javax.net.ssl.SSLHandshakeException:

     

sun.security.validator.ValidatorException:PKIX路径构建失败:

     

sun.security.provider.certpath.SunCertPathBuilderException:

     

无法找到所请求目标的有效证书路径