新的WebView()导致“ java.lang.UnsupportedOperationException:未实现”

时间:2018-12-24 03:43:30

标签: java javafx javafx-11

我无法以编程方式创建新的WebView。只需调用<?php // Create connection $conn = mysqli_connect("myDbcon", "Name", "PW", "DBname"); // Check connection if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $query = "SELECT FORMAT(SUM(test1 / test2),2) total FROM table1, table2"; $result = mysqli_query($conn, $query); $row = mysqli_fetch_array($result, MYSQLI_NUM); if ($result = mysqli_query($conn, $query)) { { printf ($row[0]); } mysqli_free_result($result); } ?> 会导致以下异常:

new WebView()

是错误吗?我正在使用OpenJFX 11.0.1和OpenJDK 11.0.1。

1 个答案:

答案 0 :(得分:2)

更新:

如评论中所述,此错误将在OpenJFX 12中修复。


这是com.sun.javafx.logging.PlatformLogger中的问题代码:

@Override
public String getName() {
   throw new UnsupportedOperationException("not implemented");
}

如您所见,它除了抛出观察到的异常外什么也不做。所有“实现的” java.lang.System.Logger方法都是如此。

如果您遵循提供的堆栈跟踪概述的代码,则getName方法将最终被调用,因为在初始化com.sun.webkit.perf.PerfLogger的过程中实例化了WebEngine,并且,通过扩展,com.sun.webkit.Invoker类。但是,仅在启用getName时调用PerfLogger

从粗略的目光看,PerfLogger包装了一个com.sun.javafx.logging.PlatformLogger,它本身包装了一个System.Logger。如果PerfLogger在构造System.Logger时对isLoggable(System.Logger.Level.FINE)返回true,则启用PerfLogger

在这种情况下,此过程将导致创建名称为System.Logger的{​​{1}}。这意味着,如果您将此"com.sun.webkit.perf.Locks"配置为不在UnsupportedOperationException或“ lower”以下记录任何内容,则可以避免使用System.Logger。这样做会使Level.FINE处于“禁用”状态,从而防止PerfLogger被调用。

注意:这是基于OpenJFX 11.0.1的源代码。提到的所有内容都是实施细节,可以随时更改,恕不另行通知。