Quarkus启动失败:java.lang.NoClassDefFoundError问题求助
GitHub Codespaces运行quarkus-github-app时出现NoClassDefFoundError错误
在GitHub Codespaces中使用quarkus-github-app,执行./mvnw quarkus:dev命令时,出现如下错误:
@MathieuSoysal ➜ /workspaces/Template-Simplifier (main) $ ./mvnw quarkus:dev [INFO] Scanning for projects... [INFO] [INFO] --------------< io.github.mathieusoysal:template-guider >--------------- [INFO] Building template-guider 1.0.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- quarkus-maven-plugin:2.16.2.Final:dev (default-cli) @ template-guider --- [INFO] Invoking org.apache.maven.plugins:maven-resources-plugin:2.6:resources @ template-guider [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] Invoking io.quarkus.platform:quarkus-maven-plugin:2.16.2.Final:generate-code @ template-guider [INFO] Invoking org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile @ template-guider [INFO] Nothing to compile - all classes are up to date [INFO] Invoking org.apache.maven.plugins:maven-resources-plugin:2.6:testResources @ template-guider [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /workspaces/Template-Simplifier/src/test/resources [INFO] Invoking io.quarkus.platform:quarkus-maven-plugin:2.16.2.Final:generate-code-tests @ template-guider [INFO] Invoking org.apache.maven.plugins:maven-compiler-plugin:3.10.1:testCompile @ template-guider [INFO] No sources to compile Listening for transport dt_socket at address: 5005 2023-02-12 16:40:01,596 INFO [io.qua.dep.dev.IsolatedDevModeMain] (main) Attempting to start live reload endpoint to recover from previous Quarkus startup failure 2023-02-12 16:40:02,075 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.NoClassDefFoundError: jakarta/enterprise/event/Event at io.quarkiverse.githubapp.deployment.GitHubAppProcessor.<clinit>(GitHubAppProcessor.java:123) at java.base/java.lang.Class.forName0(Native Method) at java.base/java.lang.Class.forName(Class.java:467) at io.quarkus.deployment.util.ServiceUtil.classesNamedIn(ServiceUtil.java:29) at io.quarkus.deployment.ExtensionLoader.loadStepsFrom(ExtensionLoader.java:215) at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:107) at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:331) at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:252) at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:60) at io.quarkus.deployment.dev.IsolatedDevModeMain.firstStart(IsolatedDevModeMain.java:86) at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:447) at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:59) at io.quarkus.bootstrap.app.CuratedApplication.runInCl(CuratedApplication.java:149) at io.quarkus.bootstrap.app.CuratedApplication.runInAugmentClassLoader(CuratedApplication.java:104) at io.quarkus.deployment.dev.DevModeMain.start(DevModeMain.java:131) at io.quarkus.deployment.dev.DevModeMain.main(DevModeMain.java:62) Caused by: java.lang.ClassNotFoundException: jakarta.enterprise.event.Event at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:516) at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:466) ... 16 more
问题分析
这个错误不是Quarkus本身或GitHub Codespaces环境导致的,核心原因是项目缺少CDI(上下文和依赖注入)相关的依赖:jakarta.enterprise.event.Event是CDI规范中的类,quarkus-github-app扩展依赖CDI,但项目未引入对应的Quarkus CDI扩展。
解决步骤
添加Quarkus CDI扩展依赖:打开项目的
pom.xml,添加以下依赖:<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-arc</artifactId> </dependency>这个扩展是Quarkus实现CDI的核心组件,quarkus-github-app运行必须依赖它。
校验版本兼容性:确保quarkus-github-app的版本与当前使用的Quarkus 2.16.2.Final版本兼容。如果版本不匹配,调整quarkus-github-app的版本号,或升级/降级Quarkus版本保持一致。
清理并重新下载依赖:执行以下命令清理Maven缓存,强制更新所有依赖:
./mvnw clean install -U重启开发模式:完成上述操作后,重新执行:
./mvnw quarkus:dev
内容的提问来源于stack exchange,提问作者ThrowsError
相关产品推荐
相关产品推荐

