-
拉取代码,
git clone https://github.com/jcefmaven/jcefmaven.git
-
导入IDE,我用的是IntelliJ IDEA 2023.3,如果用其他的就正常导入Maven项目就行了。
-
Maven构建一下
-
运行Main方法,运行
me.friwi.jcefsampleapp.MainFrame#main
方法。修改一下这里的地址,默认是谷歌,可以改成百度或者其他容易访问的网址
第一次运行的时候会下载一个针对系统的包,也是从Github上下载的,如果感觉慢的可以挂梯子。
下载完后,在工程目录的jcef-bundle文件夹下会多出很多文件,系统不同,文件可能也不同。这个是Mac的
- 如果运行的JDK版本是17,第一次运行可能会报错(从文档上看是高于16就会报错,我系统只有11和17,我用11运行没问题,17就会报错)
[0123/095427.154786:WARNING:chrome_browser_cloud_management_controller.cc(88)] Could not create policy manager as CBCM is not enabled.
Exception in thread "main" java.lang.IllegalAccessError: class org.cef.browser.mac.CefBrowserWindowMac (in unnamed module @0x3c0a50da) cannot access class sun.awt.AWTAccessor (in module java.desktop) because module java.desktop does not export sun.awt to unnamed module @0x3c0a50da
at org.cef.browser.mac.CefBrowserWindowMac.getWindowHandle(CefBrowserWindowMac.java:27)
at org.cef.browser.CefBrowserWr.getWindowHandle(CefBrowserWr.java:337)
at org.cef.browser.CefBrowserWr.access$600(CefBrowserWr.java:49)
at org.cef.browser.CefBrowserWr$3.addNotify(CefBrowserWr.java:232)
at java.desktop/java.awt.Container.addNotify(Container.java:2804)
at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4839)
at java.desktop/java.awt.Container.addNotify(Container.java:2804)
at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4839)
at java.desktop/java.awt.Container.addNotify(Container.java:2804)
at java.desktop/javax.swing.JComponent.addNotify(JComponent.java:4839)
at java.desktop/javax.swing.JRootPane.addNotify(JRootPane.java:726)
at java.desktop/java.awt.Container.addNotify(Container.java:2804)
at java.desktop/java.awt.Window.addNotify(Window.java:791)
at java.desktop/java.awt.Frame.addNotify(Frame.java:495)
at java.desktop/java.awt.Window.pack(Window.java:829)
at me.friwi.jcefsampleapp.MainFrame.<init>(MainFrame.java:173)
at me.friwi.jcefsampleapp.MainFrame.main(MainFrame.java:202)
官网给出了解决方案
Limitations
- No OSR mode supported on win-arm64 (no jogamp)
CefApp.addAppHandler(...)
should not be used. Usebuilder.setAppHandler(...)
instead (requires aCefMavenAppHandlerAdapter
)- To run on JDK 16 or later:
To use on MacOSX, add the following JVM flags:
--add-opens java.desktop/sun.awt=ALL-UNNAMED
--add-opens java.desktop/sun.lwawt=ALL-UNNAMED
--add-opens java.desktop/sun.lwawt.macosx=ALL-UNNAMED
To use OSR (off-screen render) mode, add these flags for JOGL:
--add-exports java.base/java.lang=ALL-UNNAMED
--add-exports java.desktop/sun.awt=ALL-UNNAMED
--add-exports java.desktop/sun.java2d=ALL-UNNAMED
我们只关注To use on MacOSX, add the following JVM flags
这部分就可以了,如果你也是用的IDEA,可以按照下面的方案配置
编辑运行配置
添加虚拟机选项
将上面的参数粘贴进去
粘贴完,点击后面的“展开”按钮,IDEA会自动格式化成一下的样子。
再次运行就OK了
标签:addNotify,java,JDK17,MacOSX,jcefmaven,awt,desktop,add,Container From: https://www.cnblogs.com/inkyi/p/17981744