在JavaFx Web视图中打开网页时出错

时间:2013-11-28 07:09:41

标签: java webview javafx runtime-error runtimeexception

我正在尝试在javafx webview中打开一个网页。它抛出一个致命的错误异常

错误就是这个 -

Java Runtime Environment检测到致命错误:

EXCEPTION_ACCESS_VIOLATION(0xc0000005)at 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);
     }}
       );

  }

1 个答案:

答案 0 :(得分:0)

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

请注意,JDK 7 contains some minor bugs中的WebView已在JDK 8中修复且不太可能在JDK 7中修复。我注意到的一些错误是字体渲染,即Font Awesome和Ace编辑在JDK 7中不适合我。

<强>更新

您的演示正在使用JDK 1.7.0u40。您需要在fx app线程中调用initFx

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