我似乎在多模块项目中得到了奇怪的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)
答案 0 :(得分:0)
这看起来像是我们的类加载器问题的另一部分。我们目前正在积极修复它们,但这不是一个容易的主题。
我想您只有quarkusDev有问题吗?当您执行-runner.jar
时不是吗?
如果您可以尝试组合一个简单的复制器并打开GH问题,这将很有帮助,这样我们可以确保当前的类加载器工作也可以解决此问题。