Quarkus @ApplicationScoped 在开发 运行 中工作,但在构建 jar 运行 时不工作

Quarkus @ApplicationScoped working in dev run, but not when running the built jar

我有一个抽象 class,它有一个 @ApplicationScoped 的实现。

这在 quarkusDev 中没有问题,但是当 运行 构建的应用程序时,它抱怨我在摘要 class.[=22= 中实现的功能]

java.lang.VerifyError: class me.l3n.[...].GoodReadsCrawlerService_ClientProxy overrides final method me.l3n.bot.[...].CrawlerService .parseHtml(Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;

abstract class CrawlerService {
    protected suspend infix fun parseHtml(url: String): Document {
        /* ... */
    }
}

@ApplicationScoped
class GoodReadsCrawlerService: CrawlerService() {
    /* implements other abstract functions of base class */
}

请注意,我什至没有覆盖 parseHtml() 函数。

但是如果我将 GoodReadsCrawlerService 更改为 Singleton(),或者将 open 关键字添加到 parseHtml,在任何情况下都可以正常工作。

实际例子可以在my repo中找到。

我假设 ClientProxy 将抽象 class 视为一个接口,因此实现所有代理功能,假设它们都是抽象的。

但是为什么 quarkusDev 没有发生这种情况?

这是 Quarkus 本身的 small issue,已在 2.7.1-final 中修复。