Java eclipse中JCEf未在MAC上启动
我已经用以下版本为MAC构建了jcef MAC 10.13.4 代码9.3 java 1.8.0_171和1.8.0_191都尝试过 JCEF是根据指令构建的 面向Java开发人员的Eclipse IDE Luna服务发行版1(4.4.1) 我创建了一个eclipse项目并导入了所有JAR,复制了项目中的发布文件夹,然后我尝试运行以下MainFrame.java示例Java eclipse中JCEf未在MAC上启动,java,eclipse,macos,chromium-embedded,Java,Eclipse,Macos,Chromium Embedded,我已经用以下版本为MAC构建了jcef MAC 10.13.4 代码9.3 java 1.8.0_171和1.8.0_191都尝试过 JCEF是根据指令构建的 面向Java开发人员的Eclipse IDE Luna服务发行版1(4.4.1) 我创建了一个eclipse项目并导入了所有JAR,复制了项目中的发布文件夹,然后我尝试运行以下MainFrame.java示例 package jcefdemo; import java.awt.BorderLayout; import java.awt.
package jcefdemo;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;
import org.cef.CefApp;
import org.cef.CefApp.CefAppState;
import org.cef.CefClient;
import org.cef.CefSettings;
import org.cef.OS;
import org.cef.browser.CefBrowser;
import org.cef.handler.CefAppHandlerAdapter;
import java.lang.reflect.Field;
public class MainFrame extends JFrame {
private static final long serialVersionUID = -5570653778104813836L;
private final JTextField address_;
private final CefApp cefApp_;
private final CefClient client_;
private final CefBrowser browser_;
private final Component browerUI_;
private MainFrame(String startURL, boolean useOSR, boolean isTransparent) {
CefApp.addAppHandler(new CefAppHandlerAdapter(null) {
@Override
public void stateHasChanged(org.cef.CefApp.CefAppState state) {
if (state == CefAppState.TERMINATED) System.exit(0);
}
});
CefSettings settings = new CefSettings();
settings.windowless_rendering_enabled = useOSR;
cefApp_ = CefApp.getInstance(settings);
client_ = cefApp_.createClient();
browser_ = client_.createBrowser(startURL, useOSR, isTransparent);
browerUI_ = browser_.getUIComponent();
address_ = new JTextField(startURL, 100);
address_.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
browser_.loadURL(address_.getText());
}
});
getContentPane().add(address_, BorderLayout.NORTH);
getContentPane().add(browerUI_, BorderLayout.CENTER);
pack();
setSize(800, 600);
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
CefApp.getInstance().dispose();
dispose();
}
});
}
public static void main(String[] args) {
// Perform startup initialization on platforms that require it.
try {
String libpath = "<path to project>/jcefdemo/Release";
System.setProperty("java.library.path",libpath);
final Field sysPathsField = ClassLoader.class.getDeclaredField("sys_paths");
sysPathsField.setAccessible(true);
sysPathsField.set(null, null);
if (!CefApp.startup()) {
System.out.println("Startup initialization failed!");
return;
}
boolean useOsr = false;
new MainFrame("http://www.google.com", true, true);
System.out.println("Startup ");
} catch (Exception e) {
e.printStackTrace();
}
}
}
包jcefdemo;
导入java.awt.BorderLayout;
导入java.awt.Component;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.WindowAdapter;
导入java.awt.event.WindowEvent;
导入javax.swing.JFrame;
导入javax.swing.JTextField;
导入org.cef.CefApp;
导入org.cef.CefApp.CefAppState;
导入org.cef.CefClient;
导入org.cef.cef设置;
导入org.cef.OS;
导入org.cef.browser.CefBrowser;
导入org.cef.handler.CefAppHandlerAdapter;
导入java.lang.reflect.Field;
公共类大型机扩展JFrame{
私有静态最终长serialVersionUID=-5570653778104813836L;
私有最终JTextField地址;
私人最终CefApp CefApp_u2;;
私人最终客户;
私人终审法院;
专用最终组件浏览器;
专用大型机(字符串startURL、布尔useOSR、布尔isTransparent){
CefApp.addAppHandler(新的CefAppHandlerAdapter(null){
@凌驾
公共无效状态已更改(org.cef.CefApp.CefAppState){
如果(state==CefAppState.TERMINATED)System.exit(0);
}
});
CefSettings=新的CefSettings();
settings.windowless_rendering_enabled=useOSR;
cefApp_u10;=cefApp.getInstance(设置);
client_ux=cefApp_ux.createClient();
浏览器=客户端。创建浏览器(startURL、useOSR、isTransparent);
browerUI=browser.getUIComponent();
地址=新的JTextField(startURL,100);
地址\ addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
浏览器\加载URL(地址\获取文本());
}
});
getContentPane().add(地址,BorderLayout.NORTH);
getContentPane().add(browerUI,BorderLayout.CENTER);
包装();
设置大小(800600);
setVisible(真);
addWindowListener(新的WindowAdapter(){
@凌驾
公共无效窗口关闭(WindowEvent e){
CefApp.getInstance().dispose();
处置();
}
});
}
公共静态void main(字符串[]args){
//在需要的平台上执行启动初始化。
试一试{
字符串libpath=“/jcefdemo/Release”;
setProperty(“java.library.path”,libpath);
最终字段sysPathsField=ClassLoader.class.getDeclaredField(“sys_路径”);
sysPathsField.setAccessible(true);
sysPathsField.set(null,null);
如果(!CefApp.startup()){
System.out.println(“启动初始化失败!”);
返回;
}
布尔useOsr=false;
新主机(“http://www.google.com“,真的,真的);
System.out.println(“启动”);
}捕获(例外e){
e、 printStackTrace();
}
}
}
但低于错误
java.lang.reflect.InvocationTargetException
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1349)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1324)
at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1348)
at org.cef.CefApp.<init>(CefApp.java:164)
at org.cef.CefApp.getInstance(CefApp.java:215)
at org.cef.CefApp.getInstance(CefApp.java:193)
at jcefdemo.JCefBrowser.<init>(JCefBrowser.java:34)
at jcefdemo.JCefBrowser.main(JCefBrowser.java:57)
Caused by: java.lang.UnsatisfiedLinkError: org.cef.CefApp.N_PreInitialize()Z
at org.cef.CefApp.N_PreInitialize(Native Method)
at org.cef.CefApp.access$0(CefApp.java:548)
at org.cef.CefApp$1.run(CefApp.java:157)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
initialize on Thread[AWT-EventQueue-0,6,main] with library path /Users/admin/Documents/test/jcefdemo/Release
java.lang.reflect.InvocationTargetException
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1349)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1324)
at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1348)
at org.cef.CefApp.initialize(CefApp.java:418)
at org.cef.CefApp.createClient(CefApp.java:309)
at jcefdemo.JCefBrowser.<init>(JCefBrowser.java:35)
at jcefdemo.JCefBrowser.main(JCefBrowser.java:57)
Caused by: java.lang.UnsatisfiedLinkError: org.cef.CefApp.N_Initialize(Ljava/lang/String;Lorg/cef/handler/CefAppHandler;Lorg/cef/CefSettings;)Z
at org.cef.CefApp.N_Initialize(Native Method)
at org.cef.CefApp.access$5(CefApp.java:549)
at org.cef.CefApp$3.run(CefApp.java:411)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
java.lang.UnsatisfiedLinkError: org.cef.handler.CefClientHandler.N_CefClientHandler_CTOR()V
at org.cef.handler.CefClientHandler.N_CefClientHandler_CTOR(Native Method)
at org.cef.handler.CefClientHandler.<init>(CefClientHandler.java:39)
at org.cef.CefClient.<init>(CefClient.java:90)
at org.cef.CefApp.createClient(CefApp.java:314)
at jcefdemo.JCefBrowser.<init>(JCefBrowser.java:35)
at jcefdemo.JCefBrowser.main(JCefBrowser.java:57)
java.lang.reflect.InvocationTargetException
在java.awt.EventQueue.invokeAndWait(EventQueue.java:1349)处
在java.awt.EventQueue.invokeAndWait(EventQueue.java:1324)
位于javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1348)
在org.cef.CefApp.(CefApp.java:164)
位于org.cef.CefApp.getInstance(CefApp.java:215)
位于org.cef.CefApp.getInstance(CefApp.java:193)
在jcefdemo.JCefBrowser.(JCefBrowser.java:34)
位于jcefdemo.JCefBrowser.main(JCefBrowser.java:57)
原因:java.lang.unsatifiedLinkError:org.cef.CefApp.N_PreInitialize()Z
在org.cef.CefApp.N_预初始化(本机方法)
访问org.cef.CefApp.access$0(CefApp.java:548)
位于org.cef.CefApp$1.run(CefApp.java:157)
在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)中
位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
在java.awt.EventQueue.access$500(EventQueue.java:97)
在java.awt.EventQueue$3.run(EventQueue.java:709)
在java.awt.EventQueue$3.run(EventQueue.java:703)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
位于java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)中
位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:105)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
在java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
使用库路径/Users/admin/Documents/test/jcefdemo/Release在线程[AWT-EventQueue-0,6,main]上初始化
java.lang.reflect.InvocationTargetException
在java.awt.EventQueue.invokeAndWait(EventQueue.java:1349)处
在java.awt.EventQueue.invokeAndWait(EventQueue.java:1324)
位于javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1348)
位于org.cef.CefApp.initialize(CefApp.java:418)
位于org.cef.CefApp.createClient(CefApp.java:309)
jcefdemo.JCefBrowser.(JCefBrowser.java:35)
位于jcefdemo.JCefBrowser.main(JCefBrowser.java:57)
原因:java.lang.unsatifiedlinkerror:org.cef.CefApp.N_Initialize(Ljava/lang/String;Lorg/cef/handler/CefAppHandler;Lorg/cef/CefSettings;)Z
在org.cef.CefApp.N_初始化(本机方法)
访问org.cef.CefApp.access$5(CefApp.java:549)
在org.cef.CefApp$3.run(CefApp.java:4