【问题标题】:JAVAFX 11 not supporting ECMAScript6 and css3JAVAFX 11 不支持 ECMAScript6 和 css3
【发布时间】:2019-01-24 10:27:33
【问题描述】:

我正在使用一些带有 JAVA FX 11 的绘图工具创建一个 Web 浏览 exp,但是在尝试加载具有 letconst 的 JavaScript 代码时,这些变量只是被忽略并抛出异常。我正在使用 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);
    }

【问题讨论】:

  • 看看这个问题来确定webkit版本stackoverflow.com/questions/23214913/…这应该可以让你确定那个webkit版本的特性
  • 你真的在使用 Java 8 和 JavaFX 11 吗?
  • 这是一个 rnd,我正在尝试同时运行 java 8 和 javafx 11
  • 不知道那是什么,但祝你好运混合 Java 8 和 JavaFX 11
  • 我遇到了一些限制,因为我的项目已经使用 Java 8 内置,使用 Java 9 后已弃用的 NameService,因此我必须为项目使用 java 8,但某些功能需要 Javafx-11。所以使用它

标签: java javafx ecmascript-6 javafx-11


【解决方案1】:

我正在使用 maven 3.8.0、Java 1.8 和 JavaFX 11。

简而言之,使用最新的 Java 8。Java 似乎正在更新该版本的 WebKit,因此更新的版本将产生更新的功能。阅读下面的细分,特别是 8u58u251 之间的区别。

OpenJDK 11

  • JavaFX 11.0.2:WebKit 版本 606.1 (Safari 12.x)
  • JavaFX 15-ea+3:WebKit 版本 609.1 (Safari 13.x)
    • 注意:尽管名称如此,JavaFX 15 与 JDK11 兼容

Oracle Java 8

  • Java 8u5:WebKit 版本 537.44 (Safari 7.x)
  • Java 8u251:WebKit 版本 609.1 (Safari 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 有 ECMAScript 6 support since Safari 10
  • 警告:使用 Oracle 的 Java 存在严重的商业许可问题。更多相关信息:Java Is Still Free 2.0.3。如果此许可证导致您的应用出现问题,建议使用 OpenJDK 11。本文提供了几个不受这些商业许可限制的提供程序。

【讨论】:

    猜你喜欢
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    相关资源
    最近更新 更多