java - 在JavaFx Web View 中打开网页时出错

标签 java webview javafx runtime-error runtimeexception

我正在尝试在 javafx webview 中打开网页。它抛出一个 fatal error 异常

错误是这样的-

Java 运行时环境检测到 fatal error :

EXCEPTION_ACCESS_VIOLATION (0xc0000005),位于 pc=0x6e98299b、pid=4116、tid=4224

JRE 版本:7.0_10-b18 Java VM:Java HotSpot(TM) 客户端 VM(23.6-b04 混合模式,共享 windows-x86) 有问题的框架: V [jvm.dll+0xb299b]

无法写入核心转储。 Windows 客户端版本默认不启用小型转储

包含更多信息的错误报告文件另存为: C:\Documents and Settings\Administrator\My Documents\NetBeansProjects\NetCheck\hs_err_pid4116.log

如果您想提交错误报告,请访问: http://bugreport.sun.com/bugreport/crash.jsp

出现上述错误的原因是什么,我使用以下代码。

 import javax.swing.*;
 import java.awt.*;
 import javafx.application.Platform;
 import javafx.embed.swing.JFXPanel;
 import javafx.scene.Group;
 import javafx.scene.Scene;
 import javafx.scene.web.WebEngine;
 import javafx.scene.web.WebView;



public class Browser extends javax.swing.JFrame 
{

  JFXPanel fxpanel;
  WebEngine eng;
  public Browser() {
  initComponents();
  setLayout(null);
  fxpanel=new JFXPanel();
  add(fxpanel);
  fxpanel.setBounds(50,50,700,500);
  setBounds(0,0,1024,768);

 }


 private  void initFx(final JFXPanel fxpanel)

 {
  try
   {
    Group group= new Group();
    Scene scene= new Scene(group);
    fxpanel.setScene(scene);    
    WebView webview = new WebView ();
    group.getChildren().add(webview);
    webview.setMinSize(700,500);
    webview.setMaxSize(700,500); 
    webview.setVisible(true);
    eng= webview.getEngine();
    eng.setJavaScriptEnabled(true);
    eng.load("http://www.google.com");
   }
   catch(Exception ex)
   {
     ex.printStackTrace();
   }
  }

  public static void main(String args[])
  {
  Browser b1= new Browser();
  b1.show();

  }

   private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)


   {
     Platform.runLater(new Runnable() {
      public void run()
      {
        initFx(fxpanel);
     }}
       );

  }

最佳答案

您需要更新您的 JDK,您有一个非常旧的 1.7.0u10版本(2012 年 12 月),最新的 JDK 7 版本是 1.7.0u45 .

请注意,WebViewJDK 7 contains some minor bugs这些问题已在 JDK 8 中修复,不太可能在 JDK 7 中修复。我注意到的一些错误与字体渲染有关,即 Font Awesome 和 Ace Editor 在 JDK 7 中不能很好地工作。

更新

您的演示正在 JDK 1.7.0u40 上运行。您需要调用initFx在 fx 应用程序线程中:

  Platform.runLater(new Runnable() {
        @Override
        public void run() {
            initFx(fxpanel);
        }
  });

关于java - 在JavaFx Web View 中打开网页时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20259809/

相关文章:

java - 显示数组列表的元素

javascript - 如何从 wkWebview/webView 中的 Objective-C 更改 `<input>` 元素属性(例如值)

android - 如何在webview中获取缩放视口(viewport)的宽度和高度?

java - 如何使用日历和时区

java - 打包构建 Spring 项目的最佳实践是什么?

java - 带有值提取器的 ObservableMap?

java - Scala + OpenJFX + OpenJDK

尽管在后台线程中加载许多图像,但 JavaFX 应用程序会卡住几秒钟

java - android - 从 .java 文件控制 XML 文件时出现 NullPointerException

javascript - Xamarin 表单 webview Eval 不调用 javascript