提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、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运行时异常

springboot 调用Jxbrowser内嵌浏览器相关推荐

  1. javaFX实现桌面应用程序内嵌浏览器(一、框架建设)

    一.jdk不匹配问题 修改jdk版本不成功: 1.注意环境变量是否更改 2.jdk路径已经更改成功但cmd打开输入Java -version还是原先版本:在PATH的那一溜里将把JAVA_HOME放到 ...

  2. 【java】本地客户端内嵌浏览器3 - Swing 使用 Spring 框架 + 打包项目 + 转exe + 源码

    目录 ★☆★ 写在前面 ★☆★ ★☆★ 本系列文章 ★☆★ ★☆★ 开源网址 ★☆★ 一.给 Swing 加上 Spring 0.前期努力 I. SpringBoot II. SpringMVC 1. ...

  3. PC游戏中用CEF3制作内嵌浏览器

    因为项目需要,需要将游戏手机助手中的朋友圈给移植到PC游戏中,而以前游戏中的内嵌浏览器采用的是IE6内核,满足不了我们的需求,于是决定把Cef3内嵌到游戏中,在完成正常工作之余,利用闲散时间不断地查找 ...

  4. C# 内嵌 浏览器 CEF 、FireFox、Miniblink

    项目 地址  https://github.com/TL-GuiZhou/windows.Browers Windows 平台下,C# 内嵌网页的 demo,包括当前流行的 CEF .FireFox. ...

  5. C++混合编程:QCefView、QWebKit,QWebengine、miniblink内嵌浏览器对比

       随着前端技术的发展,PC端程序越来越倾向于做第三方嵌入浏览器的应用程序.为什么手机软件安装包越来越大,大概率是由于偷偷嵌入了一个浏览器内核,例如:腾讯视频.虾米音乐等主流PC端程序都是内嵌浏览器 ...

  6. 【java】本地客户端内嵌浏览器2 - chrome/chromium/cef/jcef

    目录 ★☆★ 写在前面 ★☆★ ★☆★ 本系列文章 ★☆★ ★☆★ 开源网址 ★☆★ 一.发现新大陆 - CEF/JCEF 0.前言 1.使用 jcef.jar 搭建项目 2.启动包含 jcef.ja ...

  7. Java swing 做一个传统Web项目的桌面程序启动器(内嵌浏览器)

    背景:公司有个老项目,web项目,但是使用者都想要一个桌面应用程序.实际上,是web程序的启动较为麻烦.这里每次都需要启动Tomcat和浏览器. 想法:重写一个项目太麻烦,想想成本,人间不值得.于是我 ...

  8. Java实现内嵌浏览器

    创建项目 ---->   导入需要的jar ---->  代码实现 需要的jar: https://pan.baidu.com/s/1MEZ1S0LnKSMGQm24QWgmCw 代码: ...

  9. 调用微信内置浏览器实现微信打开的网页上的图片能点击打开的效果

    调用微信内置浏览器实现微信打开的网页上的图片能点击打开的效果 为啥微信打开的网页有的图片能点击打开,有的不能呢?因为微信内置浏览器对打开的网页做了限 制.一般我们使用微信的时候都不会特意修改浏览器,所 ...

  10. vscode预览html插件,VSCode插件推荐-VSCode内嵌浏览器插件-Browser Preview

    很多小伙伴在开发html页面的时候觉得很不方便.因为显示屏的大小是有限的,只能展示代码或者浏览器窗口的其中一种,哪怕用上了LiveServer,也需要一直切换页面,接下来小编带来的这款插件,可以在VS ...

最新文章

  1. 用TensorRT针对AArch64用户的交叉编译示例
  2. 网络工程师中级2018 2019 2004-2017年真题+答案【结构介绍】
  3. linux课程设计死锁避免,linux操作系统课程设计—车辆死锁.doc
  4. 40条优化php代码的小实例
  5. GUN sed高级用法,sed脚本编写
  6. mysql带DISTINCT 关键字的查询
  7. mysql master master_MySQL主从架构之Master-Master互为主备
  8. 2020-07-07 CVPR2020 i3DV论文讨论(3) 笔记
  9. asp.net 字符串过滤
  10. How to Use Hive-based Registry IN WINCE.NET
  11. Python小白的数学建模课-02.数据导入
  12. 5分钟看懂,未来1年web前端新趋势,都在这了!!!
  13. 快过年了,分享 25 个 JS 实用技巧送给大家吧
  14. 《互联网+ 电商平台设计与运营》一一2.4 小结
  15. C#特性 学习笔记(对象初始化器 匿名类型 扩展方法)
  16. Scss 与 Sass 是什么,他们的区别在哪里?
  17. KITTI数据集无法下载的解决方法
  18. python身份证号码共18位_用Python写一个身份证号码校验工具
  19. 客房预订管理系统(一)
  20. php两个问号??表示什么意思

热门文章

  1. hive窗口函数和hive基础使用
  2. axure 8 表格合并_Excel表格制作出库过磅单,详细步骤讲解,一起来制作吧
  3. python王者荣耀
  4. php找100到1000之间的素数_php编程输出100以内的素数
  5. Silverlight:针式打印机文字模糊的改善办法
  6. mysql非整型分区_mysql分区
  7. Windows Server 2016安装IIS服务步骤
  8. 中国姓氏数据库 java_中国姓的数据库(sql版),下你妹CSDN,又不是你的资源要你妹积分!...
  9. 英超俱乐部面临网络威胁,球队一起训练防御网络攻击
  10. 2011 年上半年软考5 月 信息系统项目管理师上午试题参考答案