JavaFX Scene Builder支持JxBrowser

一、问题描述

在项目中引入JxBrowser,然后在Fxml文件中引入JxBrowser的BrowserView控件,文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import com.teamdev.jxbrowser.chromium.javafx.BrowserView?>

<BorderPane fx:controller="com.fendo.analysis.jxbrowser.JxBrowserController" xmlns:fx="http://javafx.com/fxml">
    <top>
        <TextField fx:id="textField" text="http://www.baidu.com" onAction="#loadURL"/>
    </top>
    <center>
        <BrowserView fx:id="browserView"/>
    </center>
</BorderPane>

用JavaFX Scene Builder打开提示如下错误:

java.io.IOException: javafx.fxml.LoadException: 
/D:/xxxx/xxxx/analysis/src/main/resources/jxbrowser.fxml

	at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:92)
	at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:80)
	at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:95)
	at com.oracle.javafx.scenebuilder.kit.editor.EditorController.updateFxomDocument(EditorController.java:2370)
	at com.oracle.javafx.scenebuilder.kit.editor.EditorController.setFxmlTextAndLocation(EditorController.java:655)
	at com.oracle.javafx.scenebuilder.app.DocumentWindowController.loadFromFile(DocumentWindowController.java:386)
	at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.performOpenFiles(SceneBuilderApp.java:579)
	at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleOpenFilesAction(SceneBuilderApp.java:447)
	at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleLaunch(SceneBuilderApp.java:427)
	at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStartGeneric(AppPlatform.java:139)
	at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStart(AppPlatform.java:106)
	at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.start(SceneBuilderApp.java:371)
	at com.sun.javafx.application.LauncherImpl$8.run(LauncherImpl.java:837)
	at com.sun.javafx.application.PlatformImpl$7.run(PlatformImpl.java:335)
	at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:301)
	at com.sun.javafx.application.PlatformImpl$6$1.run(PlatformImpl.java:298)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.javafx.application.PlatformImpl$6.run(PlatformImpl.java:298)
	at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
	at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
	at com.sun.glass.ui.win.WinApplication.access$300(WinApplication.java:39)
	at com.sun.glass.ui.win.WinApplication$4$1.run(WinApplication.java:112)
	at java.lang.Thread.run(Thread.java:744)
Caused by: javafx.fxml.LoadException: 
/D:/xxxx/xxxx/analysis/src/main/resources/jxbrowser.fxml

	at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2617)
	at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2864)
	at javafx.fxml.FXMLLoader.processImport(FXMLLoader.java:2708)
	at javafx.fxml.FXMLLoader.processProcessingInstruction(FXMLLoader.java:2677)
	at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2517)
	at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425)
	at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:89)
	... 22 more
Caused by: java.lang.ClassNotFoundException: com.teamdev.jxbrowser.chromium.javafx.BrowserView
	at java.lang.ClassLoader.findClass(ClassLoader.java:530)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2932)
	at javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2921)
	at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2862)
	... 27 more

 

二、解决方法

 

这是由于JavaFX Scene Builder没有识别到JxBrowser,需要将JxBrowser的jar包复制到JavaFX Scene Builder安装目录下的app目录下

在package.cfg文件中加入以下代码:

app.classpath=jxbrowser-6.14.jar

重新打开JavaFX Scene Builder就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值