Codename One项目构建失败求助:添加HHTCrit.java后触发异常
问题
原本可正常构建的Codename One项目,修改后构建失败;回退到最近一次可构建版本后仍然无法构建。通过Codename One initializr创建的基础Java应用(使用NetBeans IDE)可正常构建,但添加一个简单的Java文件HHTCrit.java后构建失败,报错日志如下:
Tried to start hyperlog but failed: Failed to start hyperlog: Cannot run program "hyp": error=2, No such file or directory > Task :multiDexListDebug> Task :multiDexListDebug FAILED FAILED /tmp/build1965224036948247615xxx/MyApp/libs/userClasses.jar: D8: java.lang.NullPointerException/tmp/build1965224036948247615xxx/MyApp/libs/userClasses.jar: D8: java.lang.NullPointerException FAILURE: FAILURE: Build failed with an exception.Build failed with an exception. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':multiDexListDebug'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > Error while merging dex archives: * Try: Run with --debug option to get more log output. Run with --scan to get full insights. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':multiDexListDebug'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:207) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$$Lambda$477/1137979299.accept(Unknown Source) at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:205) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:186) org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':multiDexListDebug'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:207)
排查建议
- 修复Hyperlog依赖缺失:日志开头的
hyp: No such file or directory是构建环境问题。检查Codename One构建工具的安装状态,确保hyp可执行文件已正确安装并添加到系统PATH中,必要时重新安装Codename One构建套件。 - 排查D8空指针异常:
- 检查
HHTCrit.java代码,确认是否存在未初始化变量、语法错误,或是使用了Codename One不兼容的Java特性(如未转译的Java 8+语法)。 - 单独编译
HHTCrit.java生成class文件,手动打包进测试jar,验证是否会触发相同的NPE,以此确认该文件是否为直接诱因。 - 清理项目缓存:删除NetBeans项目缓存、Codename One构建临时目录(如日志中的
/tmp/buildxxx),再重新构建。
- 检查
- MultiDex配置检查:
- 确认项目
build.gradle中multiDexEnabled是否设为true,相关MultiDex依赖是否正确引入。 - 若代码量允许,尝试关闭MultiDex构建,排查是否是合并dex档案时的问题。
- 确认项目
- 逐步定位问题点:继续分批次添加原有代码,每次添加后执行构建,精准确认是否只有
HHTCrit.java导致问题,还是存在其他冲突的代码/资源。 - 获取详细日志:按照报错提示,使用
--debug参数运行构建,获取D8编译的完整日志,定位NPE的具体触发位置。
内容的提问来源于stack exchange,提问作者stylsy
相关产品推荐
相关产品推荐

