【问题标题】:IntelliJ IDEA - CodenameOne - CEF path not found after AndroidStudio installation/JDK change?IntelliJ IDEA - CodenameOne - AndroidStudio 安装/JDK 更改后找不到 CEF 路径?
【发布时间】:2022-05-05 16:45:34
【问题描述】:

我在 Windows10 系统上遇到了这个问题。

我将 JDK 更改为 OpenJDK 1.8 以便能够发送 Android 版本。

虽然我暂时没有测试 CEF 浏览器部分,但在设备上该应用程序正在运行。

在模拟器上应用程序被执行,但在出现异常后被阻止(显示一个对话框)。

此外,如果我恢复到 Oracle JDK11,问题仍然存在。

该应用程序正常运行。我还在我的系统上安装了 AndroidStudio,可能它弄乱了 PATH。

我现在该如何解决这个问题?

(见下面的日志)

谢谢

IntelliJ IDEA 2020.3.2 (Community Edition)
Build #IC-203.7148.57, built on January 26, 2021
Runtime version: 11.0.9.1+11-b1145.77 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10 10.0
GC: ParNew, ConcurrentMarkSweep
Memory: 978M
Cores: 4
Non-Bundled Plugins: com.codename1.plugin.intellij, org.jetbrains.kotlin
"C:\Program Files\Android\jdk\microsoft_dist_openjdk_1.8.0.25\bin\java.exe" -Xms128m -Xmx1011m -XX:ReservedCodeCacheSize=240m -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -XX:CICompilerCount=2 -Dsun.io.useCanonPrefixCache=false -Djdk.http.auth.tunneling.disabledSchemes=\"\" -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Djdk.attach.allowAttachSelf=true -Dkotlinx.coroutines.debug=off -Djdk.module.illegalAccess.silent=true "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.4\lib\idea_rt.jar=57718:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.4\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\user\IdeaProjects\myappcp\out\production\myappcp;C:\Users\user\IdeaProjects\myappcp\src;C:\Users\user\IdeaProjects\myappcp\lib\CodenameOne.jar;C:\Users\user\IdeaProjects\myappcp\JavaSE.jar;native\internal_tmp;lib\impl\cls com.codename1.impl.javase.Simulator com.myappcp.app.myapp
Adding CEF to classpath
Retina Scale: 1.0
[EDT] 0:0:4,330 - Codename One revisions: 7dd4e7d08b3442d90959477ee52a5ae8c4361b29

java.lang.RuntimeException: Failed to create CEF browser
    at com.codename1.impl.javase.cef.JavaCEFSEPort.createCEFBrowserComponent(JavaCEFSEPort.java:130)
    at com.codename1.impl.javase.cef.JavaCEFSEPort.createBrowserComponent(JavaCEFSEPort.java:98)
    at com.codename1.ui.BrowserComponent$9.run(BrowserComponent.java:557)
    at com.codename1.ui.Display.processSerialCalls(Display.java:1338)
    at com.codename1.ui.Display.edtLoopImpl(Display.java:1280)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:1162)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Caused by: java.lang.UnsatisfiedLinkError: no jcef in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at org.cef.SystemBootstrap$1.loadLibrary(SystemBootstrap.java:24)
    at org.cef.SystemBootstrap.loadLibrary(SystemBootstrap.java:36)
    at org.cef.CefApp.<init>(CefApp.java:149)
    at org.cef.CefApp.getInstance(CefApp.java:221)
    at com.codename1.impl.javase.cef.BrowserPanel.<init>(BrowserPanel.java:204)
    at com.codename1.impl.javase.cef.CEFBrowserComponent$3.<init>(CEFBrowserComponent.java:249)
    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:248)
    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:199)
    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:196)
    at com.codename1.impl.javase.cef.JavaCEFSEPort.createCEFBrowserComponent(JavaCEFSEPort.java:136)
    at com.codename1.impl.javase.cef.JavaCEFSEPort$2.run(JavaCEFSEPort.java:120)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
    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)
[EDT] 0:0:4,409 - Exception: java.lang.RuntimeException - Failed to create CEF browser
[EDT] 0:0:6,490 - Exception: java.lang.RuntimeException - Failed to create CEF browser
java.lang.RuntimeException: Failed to create CEF browser
    at com.codename1.impl.javase.cef.JavaCEFSEPort.createCEFBrowserComponent(JavaCEFSEPort.java:130)
    at com.codename1.impl.javase.cef.JavaCEFSEPort.createBrowserComponent(JavaCEFSEPort.java:98)
    at com.codename1.ui.BrowserComponent$9.run(BrowserComponent.java:557)
    at com.codename1.ui.Display.processSerialCalls(Display.java:1338)
    at com.codename1.ui.Display.edtLoopImpl(Display.java:1280)
    at com.codename1.ui.Display.invokeAndBlock(Display.java:1453)
    at com.codename1.ui.Display.invokeAndBlock(Display.java:1492)
    at com.codename1.ui.Form.showModal(Form.java:2552)
    at com.codename1.ui.Dialog.showModal(Dialog.java:1139)
    at com.codename1.ui.Dialog.show(Dialog.java:583)
    at com.codename1.ui.Dialog.showPackedImpl(Dialog.java:1452)
    at com.codename1.ui.Dialog.showPacked(Dialog.java:1368)
    at com.codename1.ui.Dialog.showImpl(Dialog.java:1095)
    at com.codename1.ui.Dialog.show(Dialog.java:1073)
    at com.codename1.ui.Dialog.show(Dialog.java:1028)
    at com.codename1.ui.Dialog.show(Dialog.java:794)
    at com.codename1.ui.Dialog.show(Dialog.java:747)
    at com.codename1.ui.Dialog.show(Dialog.java:712)
    at com.codename1.ui.Dialog.show(Dialog.java:653)
    at com.codename1.ui.Dialog.show(Dialog.java:808)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:1175)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Caused by: java.lang.UnsatisfiedLinkError: no jcef in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at org.cef.SystemBootstrap$1.loadLibrary(SystemBootstrap.java:24)
    at org.cef.SystemBootstrap.loadLibrary(SystemBootstrap.java:36)
    at org.cef.CefApp.<init>(CefApp.java:149)
    at org.cef.CefApp.getInstance(CefApp.java:221)
    at com.codename1.impl.javase.cef.BrowserPanel.<init>(BrowserPanel.java:204)
    at com.codename1.impl.javase.cef.CEFBrowserComponent$3.<init>(CEFBrowserComponent.java:249)
    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:248)
    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:199)
    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:196)
    at com.codename1.impl.javase.cef.JavaCEFSEPort.createCEFBrowserComponent(JavaCEFSEPort.java:136)
    at com.codename1.impl.javase.cef.JavaCEFSEPort$2.run(JavaCEFSEPort.java:120)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
    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.RuntimeException: Failed to create CEF browser
    at com.codename1.impl.javase.cef.JavaCEFSEPort.createCEFBrowserComponent(JavaCEFSEPort.java:130)
    at com.codename1.impl.javase.cef.JavaCEFSEPort.createBrowserComponent(JavaCEFSEPort.java:98)
    at com.codename1.ui.BrowserComponent$9.run(BrowserComponent.java:557)
    at com.codename1.ui.Display.processSerialCalls(Display.java:1338)
    at com.codename1.ui.Display.edtLoopImpl(Display.java:1280)
    at com.codename1.ui.Display.invokeAndBlock(Display.java:1453)
    at com.codename1.ui.Display.invokeAndBlock(Display.java:1492)
    at com.codename1.ui.Form.showModal(Form.java:2552)
    at com.codename1.ui.Dialog.showModal(Dialog.java:1139)
    at com.codename1.ui.Dialog.show(Dialog.java:583)
    at com.codename1.ui.Dialog.showPackedImpl(Dialog.java:1452)
    at com.codename1.ui.Dialog.showPacked(Dialog.java:1368)
    at com.codename1.ui.Dialog.showImpl(Dialog.java:1095)
    at com.codename1.ui.Dialog.show(Dialog.java:1073)
    at com.codename1.ui.Dialog.show(Dialog.java:1028)
    at com.codename1.ui.Dialog.show(Dialog.java:794)
    at com.codename1.ui.Dialog.show(Dialog.java:747)
    at com.codename1.ui.Dialog.show(Dialog.java:712)
    at com.codename1.ui.Dialog.show(Dialog.java:653)
    at com.codename1.ui.Dialog.show(Dialog.java:808)
    at com.codename1.ui.Display.mainEDTLoop(Display.java:1175)
    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
Caused by: java.lang.UnsatisfiedLinkError: no jcef in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at org.cef.SystemBootstrap$1.loadLibrary(SystemBootstrap.java:24)
    at org.cef.SystemBootstrap.loadLibrary(SystemBootstrap.java:36)
    at org.cef.CefApp.<init>(CefApp.java:149)
    at org.cef.CefApp.getInstance(CefApp.java:221)
    at com.codename1.impl.javase.cef.BrowserPanel.<init>(BrowserPanel.java:204)
    at com.codename1.impl.javase.cef.CEFBrowserComponent$3.<init>(CEFBrowserComponent.java:249)
    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:248)
    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:199)
    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:196)
    at com.codename1.impl.javase.cef.JavaCEFSEPort.createCEFBrowserComponent(JavaCEFSEPort.java:136)
    at com.codename1.impl.javase.cef.JavaCEFSEPort$2.run(JavaCEFSEPort.java:120)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
    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)

Process finished with exit code 0

我重置了 IDE,现在我认为问题是:

Caused by: java.lang.UnsatisfiedLinkError: no jcef in java.library.path: [C:\Program Files\Java\jdk-11.0.2\bin, C:\WINDOWS\Sun\Java\bin, C:\WINDOWS\system32, C:\WINDOWS, C:\Program Files\Common Files\Oracle\Java\javapath, C:\Program Files (x86)\Intel\iCLS Client\, C:\Program Files\Intel\iCLS Client\, C:\WINDOWS\system32, C:\WINDOWS, C:\WINDOWS\System32\Wbem, C:\WINDOWS\System32\WindowsPowerShell\v1.0\, C:\WINDOWS\System32\OpenSSH\, C:\Program Files\Intel\Intel(R) Management Engine Components\DAL, C:\Program Files\Intel\Intel(R) Management Engine Components\IPT, C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL, C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT, C:\Program Files\dotnet\, C:\Program Files\Microsoft SQL Server\130\Tools\Binn\, C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\, C:\Users\user\AppData\Local\Microsoft\WindowsApps, ., C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.4\bin, ., C:\Users\user\AppData\Local\Programs\Microsoft VS Code\bin, C:\Users\user\.dotnet\tools, C:\Users\user\AppData\Local\Box\Box Edit\, .]

【问题讨论】:

  • JCEF 在与 IntelliJ IDEA 捆绑的 JetBrains Runtime 中可用,但在您使用的 JDK 1.8 中不可用。如果您的应用程序使用 JCEF,您需要使用与 IDE 本身运行时相同的运行时运行它(在 IDE 主目录的 jbr 子目录下)。
  • @CrazyCoder 我的项目似乎搞砸了。即使我更改了 JDK 路径,它们也会被覆盖。请你告诉我我必须设置的每个事件以及设置什么?
  • 项目结构 |项目 |开发工具包。运行配置 | JRE。
  • @CrazyCoder 请检查编辑后的帖子,我附加了一些信息。我认为问题在于环境变量中的路径。谢谢
  • JDK 没有开箱即用的 JCEF,只有 JetBrains Runtime 有。

标签: java intellij-idea codenameone chromium-embedded unsatisfiedlinkerror


【解决方案1】:

我猜java.library.path 已更改或 JCEF 二进制文件位于其他位置。

所以,首先您需要找出JCEF 二进制分发版 在哪里。通常此文件夹包含文件:

  • libcef.dll
  • libEGL.dll,
  • libGLESv2.dll
  • libcef.dll
  • libjcef.dll
  • jcef_helper.exe

如果您使用 unix 基础操作系统,则为 *.so 扩展名。

如果您没有 JCEF 的二进制分发版,您可以使用 link 从源代码构建它。我想警告你,这不是一帆风顺的旅程。在最后一步(打包)中,您将获得 binary_distrib 目录

其次,您的系统已经配置了查找 jcef 二进制文件的路径。您可以在异常详细信息中看到它:

java.library.path: [C:\Program Files\Java\jdk-11.0.2\bin, C:\WINDOWS\Sun\Java\bin , ...

或者您可以通过向 IDEA 添加 VM 选项并再次运行应用程序来验证它:

Edit Configurations -> Modify options -> Tick Add VM options -> In appeared field put -XshowSettings:properties

第三,您需要将 JCEF 二进制文件 放入其中一个java.library.path

希望这个建议对你有所帮助

【讨论】:

    猜你喜欢
    • 2014-10-07
    • 1970-01-01
    • 2018-07-02
    • 2019-07-27
    • 1970-01-01
    • 2013-09-30
    • 2021-06-05
    相关资源
    最近更新 更多