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 中修复。
我有一个抽象 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 中修复。