提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、Jxbrowser是什么?
- 二、使用步骤
- 1.下载jar包
- 一、在jxbrowser的启动类中加入如下代码:
- 二、在resources目录下新建META-INF/teamdev.licenses
- 程序调用
- 注意:
前言
springboot 整合Jxbrowser,实现java程序内嵌浏览器功能提示:以下是本篇文章正文内容,下面案例可供参考
一、Jxbrowser是什么?
JxBrowser是一个跨平台的Java库,允许将基于Google Chromium的Web浏览器组件集成到Java Swing / AWT / JavaFX应用程序中。使用JxBrowser,您可以将轻量级Swing / JavaFX组件嵌入到Java应用程序中,以显示现代网页,支持最新的Web标准,如HTML5,CSS3,JavaScript等。
二、使用步骤
1.下载jar包
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import com.teamdev.jxbrowser.chromium.ba;
下载地址https://download.csdn.net/download/u014672513/15872180
1、下载完成后jar我存放在resources下
2、修改pom.xml文件
<dependency><groupId>jxbrowser-6.14</groupId><artifactId>jxbrowser-6.14</artifactId><version>6.14</version><scope>system</scope><systemPath>${project.basedir}\src\main\resources\lib\jxbrowser-6.21.jar</systemPath></dependency><dependency><groupId>jxbrowser-win32-6.14</groupId><artifactId>jxbrowser-win32-6.14</artifactId><version>6.14</version><scope>system</scope><systemPath>${project.basedir}\src\main\resources\lib\jxbrowser-win64-6.21.jar</systemPath></dependency>
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><mainClass>com.jiangh.SelfServiceApplication</mainClass><includeSystemScope>true</includeSystemScope><!--外部进行打包 --></configuration></plugin>
3、jxbrowser的破解
(注:破解仅用于技术交流,如有需要还是购买正版的好)
一、在jxbrowser的启动类中加入如下代码:
代码如下(示例)(6.21):
static {try {Field e = ba.class.getDeclaredField("e");e.setAccessible(true);Field f = ba.class.getDeclaredField("f");f.setAccessible(true);Field modifersField = Field.class.getDeclaredField("modifiers");modifersField.setAccessible(true);modifersField.setInt(e, e.getModifiers() & ~Modifier.FINAL);modifersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);e.set(null, new BigInteger("1"));f.set(null, new BigInteger("1"));modifersField.setAccessible(false);} catch (Exception e) {e.printStackTrace();}}
二、在resources目录下新建META-INF/teamdev.licenses
Product: JxBrowser
Version: 6.x
Licensed to:
License type: Enterprise
License info: JxBrowser Demo License
Expiration date: 01-01-9999
Support expiration date: NO SUPPORT
Generation date: 01-01-9999
Platforms: win32/x86;win32/x64;mac/x86;mac/x64;linux/x86;linux/x64
Company name: TeamDev Ltd.
SigB: 1
SigA: 1
程序调用
public class ApplicationRunnerImpl implements ApplicationRunner,ApplicationListener<WebServerInitializedEvent>{static {try {Field e = ba.class.getDeclaredField("e");e.setAccessible(true);Field f = ba.class.getDeclaredField("f");f.setAccessible(true);Field modifersField = Field.class.getDeclaredField("modifiers");modifersField.setAccessible(true);modifersField.setInt(e, e.getModifiers() & ~Modifier.FINAL);modifersField.setInt(f, f.getModifiers() & ~Modifier.FINAL);e.set(null, new BigInteger("1"));f.set(null, new BigInteger("1"));modifersField.setAccessible(false);} catch (Exception e) {e.printStackTrace();}}public int getServerPort() {return serverPort;}private int serverPort;@Overridepublic void run(ApplicationArguments args) throws Exception {String url = "http://localhost:"+serverPort+"/";JFrame frame = new JFrame();Browser browser = new Browser();BrowserView view = new BrowserView(browser);//禁用close功能frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//隐藏任务栏图标frame.setType(JFrame.Type.UTILITY);//不显示标题栏,最大化,最小化,退出按钮frame.setUndecorated(true);//尺寸
// frame.setSize(500, 500);//坐标frame.setLocation(0, 0);frame.add(view);//全屏显示frame.setExtendedState(JFrame.MAXIMIZED_BOTH);// 是否显示frame.setVisible(true);//是否在屏幕最上层显示frame.setAlwaysOnTop(true);//加载地址browser.loadURL(url);
// System.out.println(frame.getX());
// System.out.println(frame.getY());
// list.add(frame);frame.addWindowListener(new WindowAdapter() {// 窗口关闭时间监听@Overridepublic void windowClosing(WindowEvent e){System.out.println("窗口关闭...");}});}@Overridepublic void onApplicationEvent(WebServerInitializedEvent event) {serverPort = event.getWebServer().getPort();}
}
注意:
然后在eclipse的JREs—>VM Options里加上一句-Djava.awt.headless=false
解决问题:java.awt.HeadlessException运行时异常