在Quarkus上运行的多模块项目中的ClassCastException(等级)

时间:2019-12-29 20:49:06

标签: quarkus

我似乎在多模块项目中得到了奇怪的classcast异常。 这是项目结构的简短概述:

Project: dto-commons
    contains
        -> AuditingEntityObjectSelector (a normal java class)
        -> AbstractAuditingEntity (JPA @MappedSuperClass)

Project: model
    contains lots of JPA entities, which all extend AbstractAuditingEntity from the project 'dto-commons'
    depends on 
        -> dto-commons

Project: selectors
    contains
        -> SampleRequestSelector (a normal java class which extends AuditingEntityObjectSelector from the project 'dto-commons'
    depends on 
        -> model


Project:mainservices
    - model
    - selectors
    - dto-commons

Project:rest-api   --> This project is launched with quarkusDev (gradle)
    - mainservices

我创建了一个小的testresource,在其中注入了一些服务,EntityManager等。 一切似乎都正常,除了我得到了非常奇怪的ClassCastExceptions

  

java.lang.ClassCastException:类   com.geodesk.queryinfrastructure.selector.SampleRequestSelector无法   上课   com.geodesk.domain.queryinfrastructure.AuditingEntityObjectSelector

一些调试向我显示了以下内容:

new SampleRequest() instanceof AbstractAuditingEntity --> true (which is correct)
new SampleRequestSelector() instanceof AuditingEntityObjectSelector --> false (which is NOT correct)

这可能是一个类加载问题,但是我不知道是什么原因造成的。

SampleRequest.class.classLoader == AbstractAuditingEntity.class.classloader --> true 
SampleRequestSelector.class.classLoader == AuditingEntityObjectSelector.class.classloader --> false (don't know for sure, but I think that should be true)

任何人都可以指出正确的方向吗?

(请注意,所有项目的资源目录中确实都有一个空的META-INF / beans.xml)

1 个答案:

答案 0 :(得分:0)

这看起来像是我们的类加载器问题的另一部分。我们目前正在积极修复它们,但这不是一个容易的主题。

我想您只有quarkusDev有问题吗?当您执行-runner.jar时不是吗?

如果您可以尝试组合一个简单的复制器并打开GH问题,这将很有帮助,这样我们可以确保当前的类加载器工作也可以解决此问题。