我正在尝试在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);
}}
);
}
答案 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);
}
});