You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codename One旧Android项目构建上传失败求助

问题:旧Codename One应用通过Eclipse提交Android构建失败,APK未出现在构建列表

我有一个超过2年的旧Android应用,需要重新提交到Play Store。使用Arch系统,通过Eclipse开发该应用。使用Initializr和VSCode上传新生成的应用一切正常,但通过Eclipse中的Codename One -> Send Android build功能上传旧应用时,终端显示构建成功,但APK并未出现在构建站点的构建列表中。

初始控制台输出

Buildfile: /home/user/eclipse-workspace/A1_Test/build.xml

-cn1-compile-css:
        [java] Retina Scale: 1.0
        [java] Using stateful mode. Use -help flag to see options for new stateless mode.
        [java] Updating merge file /home/rainer/eclipse-workspace/A1_Test/css/theme.css.merged
        [java] Compiling /home/rainer/eclipse-workspace/A1_Test/css/theme.css.merged to /home/rainer/eclipse-workspace/A1_Test/src/theme.res
        [java] File has not changed since last compile.
        [java] CSS file successfully compiled.  /home/rainer/eclipse-workspace/A1_Test/src/theme.res

jar:
        [echo] Compile is forcing compliance to the supported API's/features for maximum device compatibility. This allows smaller
        [echo]          code size and wider device support
        [copy] Copying 14 files to /home/rainer/eclipse-workspace/A1_Test/build/tmp
       [javac] /home/rainer/eclipse-workspace/A1_Test/build.xml:105: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
       [javac] Compiling 14 source files to /home/rainer/eclipse-workspace/A1_Test/build/tmp
       [javac] Note: Some input files use unchecked or unsafe operations.
       [javac] Note: Recompile with -Xlint:unchecked for details.
         [jar] Building jar: /home/rainer/eclipse-workspace/A1_Test/dist/A1_Test.jar
       [javac] /home/rainer/eclipse-workspace/A1_Test/build.xml:129: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
BUILD SUCCESSFUL
Total time: 7 seconds

新增错误输出

CSS> [EDT] 0:0:0,162 - Exception: java.lang.UnsatisfiedLinkError - /home/rainer/.codenameone/cef/lib/linux64/libjcef.so: libjawt.so: cannot open shared object file: No such file or directory
CSS> java.lang.UnsatisfiedLinkError: /home/rainer/.codenameone/cef/lib/linux64/libjcef.so: libjawt.so: cannot open shared object file: No such file or directory
CSS>    at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
CSS>    at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
CSS>    at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
CSS>    at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
CSS>    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2415)
CSS>    at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
CSS>    at java.base/java.lang.System.loadLibrary(System.java:1989)
CSS>    at org.cef.SystemBootstrap$1.loadLibrary(SystemBootstrap.java:24)
CSS>    at org.cef.SystemBootstrap.loadLibrary(SystemBootstrap.java:36)
CSS>    at org.cef.CefApp.startup(CefApp.java:536)
CSS>    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:207)
CSS>    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:199)
CSS>    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:196)
CSS>    at com.codename1.impl.javase.cef.JavaCEFSEPort.createCEFBrowserComponent(JavaCEFSEPort.java:139)
CSS>    at com.codename1.impl.javase.cef.JavaCEFSEPort$2.run(JavaCEFSEPort.java:121)
CSS>    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
CSS>    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
CSS>    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
CSS>    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
CSS>    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
CSS>    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
CSS>    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741)
CSS>    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
CSS>    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
CSS>    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
CSS>    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
CSS>    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
CSS>    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
CSS> [EDT] 0:0:0,174 - Exception: java.lang.RuntimeException - Failed to create CEF browser
CSS> java.lang.RuntimeException: Failed to create CEF browser
CSS>    at com.codename1.impl.javase.cef.JavaCEFSEPort.createCEFBrowserComponent(JavaCEFSEPort.java:133)
CSS>    at com.codename1.impl.javase.cef.JavaCEFSEPort.createBrowserComponent(JavaCEFSEPort.java:98)
CSS>    at com.codename1.ui.BrowserComponent$9.run(BrowserComponent.java:557)
CSS>    at com.codename1.ui.Display.processSerialCalls(Display.java:1338)
CSS>    at com.codename1.ui.Display.edtLoopImpl(Display.java:1280)
CSS>    at com.codename1.ui.Display.mainEDTLoop(Display.java:1162)
CSS>    at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
CSS>    at com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
CSS> Caused by: java.lang.UnsatisfiedLinkError: /home/rainer/.codenameone/cef/lib/linux64/libjcef.so: libjawt.so: cannot open shared object file: No such file or directory
CSS>    at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
CSS>    at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
CSS>    at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
CSS>    at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
CSS>    at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2415)
CSS>    at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:818)
CSS>    at java.base/java.lang.System.loadLibrary(System.java:1989)
CSS>    at org.cef.SystemBootstrap$1.loadLibrary(SystemBootstrap.java:24)
CSS>    at org.cef.SystemBootstrap.loadLibrary(SystemBootstrap.java:36)
CSS>    at org.cef.CefApp.startup(CefApp.java:536)
CSS>    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:207)
CSS>    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:199)
CSS>    at com.codename1.impl.javase.cef.CEFBrowserComponent.create(CEFBrowserComponent.java:196)
CSS>    at com.codename1.impl.javase.cef.JavaCEFSEPort.createCEFBrowserComponent(JavaCEFSEPort.java:139)
CSS>    at com.codename1.impl.javase.cef.JavaCEFSEPort$2.run(JavaCEFSEPort.java:121)
CSS>    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:308)
CSS>    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
CSS>    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
CSS>    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
CSS>    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
CSS>    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
CSS>    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741)
CSS>    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
CSS>    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
CSS>    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
CSS>    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
CSS>    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
CSS>    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

解决方法

  • 修复缺失的libjawt.so依赖
    Arch系统中,libjawt.so属于完整JDK包的一部分,确保安装了jdk-openjdk而非仅JRE:

    sudo pacman -S jdk-openjdk
    

    找到libjawt.so的路径(通常在/usr/lib/jvm/java-<version>-openjdk/lib/),设置环境变量让系统能找到它:

    export LD_LIBRARY_PATH=/usr/lib/jvm/java-<version>-openjdk/lib:$LD_LIBRARY_PATH
    

    或者将路径添加到/etc/ld.so.conf.d/java.conf文件中,执行sudo ldconfig生效。

  • 清理Codename One CEF缓存
    删除本地CEF组件缓存目录,让Codename One重新下载适配版本:

    rm -rf ~/.codenameone/cef
    

    重启Eclipse后重新尝试提交构建。

  • 更新Codename One Eclipse插件
    旧版本插件可能与Arch系统的JDK或CEF组件不兼容,在Eclipse中更新Codename One插件到最新版本,重启后再执行构建操作。

  • 使用命令行替代构建
    绕过Eclipse插件的CEF浏览器问题,直接在项目根目录执行Ant命令提交构建:

    ant build-android
    

内容的提问来源于stack exchange,提问作者rainer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:54:57