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

Posted

技术标签:

【中文标题】在 JavaFx Web 视图中打开网页时出错【英文标题】:Error in opening the webpage in JavaFx web view 【发布时间】:2013-12-14 02:50:34 【问题描述】:

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

错误是这样的-

Java 运行时环境检测到致命错误:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) 在 pc=0x6e98299b, pid=4116, tid=4224

JRE 版本:7.0_10-b18 Java VM:Java HotSpot(TM) Client 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);
     
       );

  

【问题讨论】:

把这个bug贴到oracle上你可能会得到解决办法 【参考方案1】:

您需要更新 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 Editor 没有在 JDK 7 中为我工作得很好。

更新

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

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

【讨论】:

在 JDK 8 中 jdbc:odbc 支持不存在,替代方案是什么 你的演示对我有用,我已经更新了示例。我认为它也应该适用于 u45。 是的,它在某些系统上工作,我知道这个错误与 JVM 有关,但我没有解决方案 您能否发布不适用于 1.7.0u45 的代码的 SSCCE?如果真的不行,也可能是 Swing+FX 组合的问题,你可以尝试单独使用 JavaFX。这是一个浏览器演示:***.com/a/20135387/1851024.

以上是关于在 JavaFx Web 视图中打开网页时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何使用颤振在网页视图中打开pdf文档

打开网页时出现403Forbidden是啥意思

在 Web 服务器上打开 SQL Server 连接时出错

href 标记无法在新的 web 视图或移动 Safari 中打开

单击另一个 Web 视图上的图像时在 Web 视图中打开图像?

在 Views 文件夹外查看时出错