Hilla应用启动报错:未找到有效可执行文件
解决Hilla应用启动时的
CommandNotFoundException错误 错误原因
这个错误是Hilla框架在生成OpenAPI文档、构建前端资源时,找不到必需的可执行文件(通常是Node.js或其包管理工具npm/yarn)导致的——Hilla依赖Node.js完成前端部分的构建工作。
解决步骤
- 检查Node.js是否已安装:打开终端执行
node -v,若未返回版本号,需安装对应系统的Node.js稳定版本。 - 验证Node.js是否在系统PATH中:执行
echo $PATH(Linux/macOS)或echo %PATH%(Windows),确认Node.js的安装目录已加入系统环境变量。 - 重新安装项目前端依赖:进入项目根目录,执行
npm install,确保所有前端依赖安装完成。 - 重启开发服务器:关闭当前运行的服务进程,重新执行项目启动命令(如
./mvnw spring-boot:run)。
原始错误日志
dev.hilla.engine.commandrunner.CommandNotFoundException: No valid executable found at dev.hilla.engine.commandrunner.CommandRunner.lambda$run$0(CommandRunner.java:72) ~[engine-core-2.2.0.jar:na] at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] at dev.hilla.engine.commandrunner.CommandRunner.run(CommandRunner.java:72) ~[engine-core-2.2.0.jar:na] at dev.hilla.internal.AbstractTaskEndpointGenerator.prepareEngineConfiguration(AbstractTaskEndpointGenerator.java:87) ~[engine-runtime-2.2.0.jar:na] at dev.hilla.internal.AbstractTaskEndpointGenerator.getEngineConfiguration(AbstractTaskEndpointGenerator.java:59) ~[engine-runtime-2.2.0.jar:na] at dev.hilla.internal.TaskGenerateOpenAPIImpl.execute(TaskGenerateOpenAPIImpl.java:67) ~[engine-runtime-2.2.0.jar:na] at com.vaadin.flow.server.frontend.NodeTasks.execute(NodeTasks.java:312) ~[flow-server-24.1.11.jar:24.1.11] at com.vaadin.base.devserver.startup.DevModeInitializer.runNodeTasks(DevModeInitializer.java:352) ~[vaadin-dev-server-24.1.11.jar:na] at com.vaadin.base.devserver.startup.DevModeInitializer.lambda$initDevModeHandler$0(DevModeInitializer.java:293) ~[vaadin-dev-server-24.1.11.jar:na] at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[na:na] at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[na:na] at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387) ~[na:na] at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312) ~[na:na] at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843) ~[na:na] at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808) ~[na:na] at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188) ~[na:na]
内容的提问来源于stack exchange,提问作者Amit Tamrakar
相关产品推荐
相关产品推荐

