首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX11不支持ECMAScript6和css3

JavaFX11不支持ECMAScript6和css3
EN

Stack Overflow用户
提问于 2019-01-24 10:27:33
回答 1查看 1.1K关注 0票数 1

我正在用JAVA 11创建一个带有绘图工具的web浏览exp,但是在尝试加载letconst使用的javascript代码时,这些变量只是被忽略并抛出异常。我使用的是maven 3.8.0、Java1.8和JavaFX 11。

守则如下:

代码语言:javascript
复制
<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代码

代码语言:javascript
复制
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);
    }
EN

回答 1

Stack Overflow用户

发布于 2020-06-11 17:51:02

我使用的是maven 3.8.0、Java1.8和JavaFX 11。

总之,使用最新的Java8。Java似乎正在更新该版本的WebKit,因此更新的版本将产生新的特性。请阅读下面的详细信息,特别是8u58u251之间的差异。

OpenJDK 11

  • JavaFX 11.0.2: WebKit版本606.1 (Safari 12.x)
  • JavaFX 15-ea+3: WebKit Version 609.1 (Safari 13.x)
    • 注意:尽管有名字,但JavaFX 15是JDK11兼容的

Oracle Java 8

  • Java8u5: WebKit版本537.44 (Safari 7.x)
  • Java8u251: WebKit版本609.1 (Safari 13.x)

一些有用的信息:

  • Oracle Java 1.8附带了自己的捆绑Java版本,通常不能被覆盖。要使用FX11,您需要使用Java11运行项目,并将系统属性java.library.path设置为FX框架的位置。
  • 使用web.getEngine().getUserAgent()技术获得的每个https://stackoverflow.com/a/23228558/3196753版本
  • 假设WebKit ~= Safari。野生动物园有自Safari 10以来对ECMAScript 6的支持
  • 警告:使用Oracle存在严重的商业许可问题。这里有更多关于这一点的信息:Java仍然是免费的2.0.3。如果此许可证导致应用程序出现问题,建议使用OpenJDK 11。这篇文章有几个没有这些商业许可限制的提供者。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54344423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档