wildfly quickstart microprofile-health:NoClassDefFoundError

wildfly quickstart microprofile-health : NoClassDefFoundError

我使用的是 wildfly-25.0.1.Final。我无法测试 microprofile-health quickstart :

Failed to define class org.wildfly.quickstarts.microprofile.health.DatabaseConnectionHealthCheck in Module "deployment.microprofile-health.war" from Service Module Loader: java.lang.NoClassDefFoundError: Failed to link org/wildfly/quickstarts/microprofile/health/DatabaseConnectionHealthCheck (Module "deployment.microprofile-health.war" from Service Module Loader): org/eclipse/microprofile/health/HealthCheck
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1095)
    at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:424)
    at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
    at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:126)
    at org.jboss.modules.Module.loadModuleClass(Module.java:753)
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
    at org.jboss.as.weld@25.0.1.Final//org.jboss.as.weld.WeldModuleResourceLoader.classForName(WeldModuleResourceLoader.java:68)
    at org.jboss.weld.core@3.1.8.Final//org.jboss.weld.bootstrap.AnnotatedTypeLoader.loadClass(AnnotatedTypeLoader.java:83)
    at org.jboss.weld.core@3.1.8.Final//org.jboss.weld.bootstrap.AnnotatedTypeLoader.loadAnnotatedType(AnnotatedTypeLoader.java:63)
    at org.jboss.weld.core@3.1.8.Final//org.jboss.weld.bootstrap.FastAnnotatedTypeLoader.loadAnnotatedType(FastAnnotatedTypeLoader.java:108)
    at org.jboss.weld.core@3.1.8.Final//org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:87)
    at org.jboss.weld.core@3.1.8.Final//org.jboss.weld.bootstrap.ConcurrentBeanDeployer.doWork(ConcurrentBeanDeployer.java:55)
    at org.jboss.weld.core@3.1.8.Final//org.jboss.weld.bootstrap.ConcurrentBeanDeployer.doWork(ConcurrentBeanDeployer.java:52)
    at org.jboss.weld.core@3.1.8.Final//org.jboss.weld.executor.IterativeWorkerTaskFactory.call(IterativeWorkerTaskFactory.java:62)
    at org.jboss.weld.core@3.1.8.Final//org.jboss.weld.executor.IterativeWorkerTaskFactory.call(IterativeWorkerTaskFactory.java:55)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.JBossThread.run(JBossThread.java:513)

但是如果我使用 standalone-microprofile.xml 启动 wildfly,问题就会消失。不幸的是,快速入门并没有这么说。

所以看起来 microprofile.health-smallrye 在 wildfly-25.0.1 standalone.xml 中消失了(它在 wildfly-20.0.1 中存在)。

我的问题是:如何将 microprofile.health-smallrye 添加到现有的 standalone.xml?

看起来有一个 bug 提交了这个,但它在 WildFly 25 中被修复了。也就是说我在默认的 README 中没有看到参考。

也就是说它确实需要 standalone-microprofile.xml。您还可以将带有 CLI 的子系统添加到 standalone.xml 并以这种方式运行它。以下 CLI 命令会将 microprofile-health-smallrye 添加到您开始时尚未包含子系统的任何配置中。

/extension=org.wildfly.extension.microprofile.health-smallrye:add
/subsystem=microprofile-health-smallrye:add