我正在尝试在 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
.
请注意,WebView
在 JDK 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/