【问题标题】:JavaFX2.0 webview not rendering the page?JavaFX2.0 webview 不渲染页面?
【发布时间】:2012-07-04 05:04:32
【问题描述】:

我在JavaFX2.0中写了如下代码

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

/**
 *
 * @author roger
 */
public class WebViewDemo extends Application {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        StackPane root = new StackPane();
        WebView x = new WebView();
        WebEngine ex = x.getEngine();
        ex.load("http://www.google.com");
        root.getChildren().add(x);
        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

我收到以下错误,但无法弄清楚出了什么问题?

Jul 03, 2012 11:18:42 PM com.sun.webpane.webkit.network.URLLoader doRun
WARNING: Unexpected error
java.lang.IllegalArgumentException: Illegal cookie name
    at java.net.HttpCookie.<init>(HttpCookie.java:158)
    at java.net.HttpCookie.parseInternal(HttpCookie.java:964)
    at java.net.HttpCookie.parse(HttpCookie.java:215)
    at java.net.HttpCookie.access$100(HttpCookie.java:58)
    at java.net.HttpCookie$12.parse(HttpCookie.java:1096)
    at sun.net.www.protocol.http.HttpURLConnection.filterHeaderField(HttpURLConnection.java:2605)
    at sun.net.www.protocol.http.HttpURLConnection.getFilteredHeaderFields(HttpURLConnection.java:2642)
    at sun.net.www.protocol.http.HttpURLConnection.getHeaderFields(HttpURLConnection.java:2686)
    at com.sun.webpane.webkit.network.URLLoader.extractHeaders(URLLoader.java:776)
    at com.sun.webpane.webkit.network.URLLoader.willSendRequest(URLLoader.java:574)
    at com.sun.webpane.webkit.network.URLLoader.doRun(URLLoader.java:155)
    at com.sun.webpane.webkit.network.URLLoader.access$000(URLLoader.java:42)
    at com.sun.webpane.webkit.network.URLLoader$1.run(URLLoader.java:104)
    at com.sun.webpane.webkit.network.URLLoader$1.run(URLLoader.java:101)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.webpane.webkit.network.URLLoader.run(URLLoader.java:101)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

请告诉我需要修改什么以及出了什么问题?

【问题讨论】:

  • 不要将此作为答案,因为我不确定发生了什么,但是使用 http://javafx.com 而不是 http://www.google.com 运行您的示例可以正常工作。除了 google.com 显然使用 cookie,我假设 JavaFX 网站没有。
  • @jschoen 你是绝对正确的!!! 100/100 发表此回复,我会将其标记为正确!! :) 但我仍然需要检查 cookie 支持!感谢您指出。
  • 其实我觉得我找到了解决办法,一秒我就打出来。

标签: java javafx-2


【解决方案1】:

我发现一些 google-fu this 论坛帖子导致了这个错误 RT-15676。该帖子建议添加以下行:

java.net.CookieHandler.setDefault(null);

在应用程序启动之后但在启动 WebView 之前。所以我在将根 StackPane 添加到场景之前放置了它。它现在似乎可以工作了。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class WebViewDemo extends Application {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        StackPane root = new StackPane();
        WebView x = new WebView();
        WebEngine ex = x.getEngine();
        ex.load("http://www.google.com");

        root.getChildren().add(x);
        java.net.CookieHandler.setDefault(null);
        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 2020-09-04
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    相关资源
    最近更新 更多