首页 文章

观察注入私有最终错误

提问于
浏览
0
data class ExeEvent(val id: Long)


@Stateless
open class ExeManagerBean : IExeManagerBean {

 @Inject
    open val events: Event<ExeEvent>? = null


override fun listenTo(@Observes(during = TransactionPhase.AFTER_SUCCESS) exeEvent: ExeEvent) {

    try {
        //doWork
    } catch (ex: Exception) {
        logger.error("Fail. ex:$ex")
    }
}

在部署应用程序:

16:38:56,060 ERROR [org.jboss.msc.service.fail](MSC服务主题1-4)MSC000001:无法启动服务jboss.deployment.unit . “pay.ear”.WeldStartService:org.jboss.msc服务jboss.deployment.unit中的.service.StartException . “bisys-pay-ear-worker.ear”.WeldStartService:无法在org.jboss.msc.service.ServiceControllerImpl启动服务$ StartTask.run(ServiceControllerImpl.java:1904 )java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java: 745)引起:org.jboss.weld.exceptions.DefinitionException:WELD-000810:无法在最终字段上放置限定符:[EnhancedAnnotatedFieldImpl] @Inject private final ExeManagerBean.exeEvent

1 回答

  • 0

    由于 val 关键字已将变量 events 定义为final,因此已将其设置为 null .

    • val 更改为'var':

    @Inject打开var事件:事件? = null

    • 使用后期初始化和 events 将是非可空类型:

    @Inject open lateinit var events:Event

相关问题