我正在使用 JAVA FX 11 的一些绘图工具创建一个网页浏览exp,但是在尝试加载具有以下功能的javascript代码时let
and const
使用这些变量只是被忽略并抛出异常。我使用的是 Maven 3.8.0、Java 1.8 和 JavaFX 11。
代码如下:
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>12-ea+9</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-web</artifactId>
<version>12-ea+9</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-swing</artifactId>
<version>12-ea+9</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>12-ea+9</version>
</dependency>
和Java代码
public static void main(String[] urls) {
String javaVersion = System.getProperty("java.version");
String javafxVersion = System.getProperty("javafx.version");
System.out.println(javaVersion + " java....... fx........ " + javafxVersion);
Application.launch(urls);
}
@Override
public void start(Stage stage) throws Exception {
Parameters parameters = getParameters();
List<String> raw = parameters.getRaw();
String url = "http://example.com/";
if (raw.size() != 0) {
url = raw.get(0);
}
/*
* WebConsoleListener.setDefaultListener((webView, message, lineNumber,
* sourceId) -> { System.out.println(message + "[at " + lineNumber + "] [in " +
* sourceId + "]"); });
*/
Pane root = new Pane();
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
// Load the Google web page
webEngine.load(url);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setTitle("IWB");
stage.show();
// mainStage = stage;
root.getChildren().add(webView);
webView.setMinSize((screenSize.getWidth() - 120), (screenSize.getHeight() - 60));
btns.setMinHeight(screenSize.getHeight() - 60);
stage.setOnCloseRequest(e -> {
// Platform.exit();
// System.exit(0);
});
// Platform.setImplicitExit(false);
}
我使用的是 Maven 3.8.0、Java 1.8 和 JavaFX 11。
简而言之,使用最新的 Java 8。Java 似乎正在更新该版本上的 WebKit,因此较新的版本将产生较新的功能。请阅读下面的详细信息,特别是之间的区别8u5
and 8u251
.
OpenJDK 11
- JavaFX 11.0.2:WebKit 版本
606.1
(苹果浏览器12.x)
- JavaFX 15-ea+3: WebKit Version
609.1
(Safari 13.x)
-
Note:尽管名称如此,JavaFX 15 仍兼容 JDK11
甲骨文Java 8
- Java 8u5:WebKit 版本
537.44
(苹果浏览器7.x)
- Java 8u251:WebKit 版本
609.1
(苹果浏览器13.x)
一些有用的信息:
- Oracle Java 1.8 附带了自己的捆绑 Java FX 版本,该版本通常无法被覆盖。要使用 Java FX11,您需要使用 Java 11 运行项目并设置系统属性
java.library.path
到 FX 框架的位置。
- 使用获得的版本
web.getEngine().getUserAgent()
技术每https://stackoverflow.com/a/23228558/3196753
- 假设 WebKit ~= Safari。 Safari 有自 Safari 10 起支持 ECMAScript 6.
-
Warning:使用 Oracle 的 Java 会产生严重的商业许可影响。更多相关信息请点击这里:Java 仍然免费 2.0.3。如果此许可证导致您的应用程序出现问题,建议使用 OpenJDK 11。本文提供了几个没有这些商业许可限制的提供程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)