Springboot整合JxBrowser&JavaFX
1、下载JxBrowser相关依赖
JxBrowser官网:https://teamdev.cn/jxbrowser/
或者
csdn资源:https://download.youkuaiyun.com/download/nl9788/87965368
2、pom文件引入
<dependency>
<groupId>jxbrowser-7.19</groupId>
<artifactId>jxbrowser-7.19</artifactId>
<version>7.19</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\resources\lib\jxbrowser-7.19.jar</systemPath>
</dependency>
<dependency>
<groupId>jxbrowser-win64-7.19</groupId>
<artifactId>jxbrowser-win64-7.19</artifactId>
<version>7.19</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\resources\lib\jxbrowser-win64-7.19.jar</systemPath>
</dependency>
<dependency>
<groupId>jxbrowser-javafx-7.19</groupId>
<artifactId>jxbrowser-javafx-7.19</artifactId>
<version>7.19</version>
<scope>system</scope>
<systemPath>${project.basedir}\src\main\resources\lib\jxbrowser-javafx-7.19.jar</systemPath>
</dependency>
<!-- 需要修改的地方 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.12.RELEASE</version>
<configuration>
<mainClass>com.ControlClientApplication</mainClass>
<!-- 需要添加此处用来引入外部的依赖文件 需要修改的地方 -->
<includeSystemScope>true</includeSystemScope><!--外部进行打包 -->
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
3、配置启动类
import com.teamdev.jxbrowser.browser.Browser;
import com.teamdev.jxbrowser.engine.Engine;
import com.teamdev.jxbrowser.engine.EngineOptions;
import com.teamdev.jxbrowser.engine.RenderingMode;
import com.teamdev.jxbrowser.view.javafx.BrowserView;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class JavaFXApplication extends Application {
@Override
public void start(Stage primaryStage) {
//此处需要配置您的授权秘钥
System.setProperty("jxbrowser.license.key", "*********");
Engine engine = Engine.newInstance(EngineOptions.newBuilder(RenderingMode.HARDWARE_ACCELERATED).diskCacheSize(335544320).build());
Browser browser = engine.newBrowser();
//您要访问的url
browser.navigation().loadUrl("http://127.0.0.1:8087/");
BrowserView view = BrowserView.newInstance(browser);
Scene scene = new Scene(new BorderPane(view), 800, 600);
primaryStage.setTitle("单机鉴权测试");
primaryStage.setScene(scene);
primaryStage.show();
primaryStage.setMaximized(true);
}
}
注意:程序在运行时会报java.awt.HeadlessException: null的错误
方法1:打包后也可正常运行,重写主启动方法:
import com.iscas.config.JavaFXApplication;
import javafx.application.Application;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class ControlClientApplication {
public static void main(String[] args) {
// SpringApplication.run(ControlClientApplication.class, args);
SpringApplicationBuilder builder = new SpringApplicationBuilder(ControlClientApplication.class);
builder.headless(false).run(args);
// 启动JavaFX应用程序
Application.launch(JavaFXApplication.class, args);
}
}
方法2: 在开发环境下有效
在启动配置中VM options添加:-Djava.awt.headless=false
此时,点击运行即可弹出javaFx窗体;