在 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 视图中打开网页时出错的主要内容,如果未能解决你的问题,请参考以下文章
href 标记无法在新的 web 视图或移动 Safari 中打开