我正在尝试打开“ engine.load(” https://login.microsoftonline.com“);”;在JavaFX WebView中。
使用 jdk1.8.0_161 时,页面已加载。使用 jdk1.8.0_181 时,页面不会加载。它显示空窗口,不返回任何错误: engine.getLoadWorker()。exceptionProperty()为空。
您是否知道Java新版本更新中可能发生的更改?我在Java 10最新版本上进行了测试,并且该页面也未加载。 该代码适用于JDK8.161和JDK9.0.4,但不适用于JDK8.181和JDK10.0.2
这是我创建的示例应用程序的源代码:
android:src
答案 0 :(得分:1)
事实证明,任何网络问题(DNS /连接)都可能导致错误,并且负载不会引发任何适当的异常。 好消息是,如果您替换.load(url)调用,至少您会在日志中看到问题。
在替换时,我的意思是将网站分别加载到字符串中
private static String getData(String address) throws Exception {
URL page = new URL(address);
StringBuffer text = new StringBuffer();
HttpURLConnection conn = (HttpURLConnection) page.openConnection();
conn.connect();
try (InputStreamReader in = new InputStreamReader(
(InputStream) conn.getContent())) {
BufferedReader buff = new BufferedReader(in);
String line;
do {
line = buff.readLine();
text.append(line + "\n");
} while (line != null);
return text.toString();
} finally {
conn.disconnect();
}
}
并替换.load:
//engine.load("https://login.microsoftonline.com");
engine.loadContent(getData("https://login.microsoftonline.com"));
当然,应该捕获并记录异常。 (有趣的是,引用的资源(images / js / css任何文件)也将以这种方式很好地加载。)