java.lang.NoSuchMethodError 当 运行 来自外部 .jar 的代码
java.lang.NoSuchMethodError When Running A Code From External .jar
我有一段代码在运行时抛出 java.lang.NoSuchMethodError 我无法解决:
private def saveActivationEvent(event: ActivationEvent) = activationEventService.createIfFirst(event)
实施:
case class ActivationEvent extends Event
class ActivationEventService extends AbstractEventService[ActivationEvent]
abstract class AbstractExalateEventService[E <: Event] {
def createIfFirst(event: E)(implicit reader: BSONDocumentReader[E], writer: BSONDocumentWriter[E]): Future[Option[BSONObjectID]] = ...
}
我认为这是因为类型擦除而发生的...有人可以帮助我理解这个问题吗?
正如我在上面的评论中提到的,任何时候你看到 NoSuchMethodError
,你首先应该检查的是你的编译和运行时依赖版本是否匹配。对于它的价值,我想不出类型擦除与 NoSuchMethodError
有任何关系的方式——如果有人因为擦除而匹配了错误的类型测试,你可能会看到 ClassCastException
,但即使在那种情况下,问题也不是真正的擦除,而是有人试图解决它(并忽略了编译器的警告)。
我有一段代码在运行时抛出 java.lang.NoSuchMethodError 我无法解决:
private def saveActivationEvent(event: ActivationEvent) = activationEventService.createIfFirst(event)
实施:
case class ActivationEvent extends Event
class ActivationEventService extends AbstractEventService[ActivationEvent]
abstract class AbstractExalateEventService[E <: Event] {
def createIfFirst(event: E)(implicit reader: BSONDocumentReader[E], writer: BSONDocumentWriter[E]): Future[Option[BSONObjectID]] = ...
}
我认为这是因为类型擦除而发生的...有人可以帮助我理解这个问题吗?
正如我在上面的评论中提到的,任何时候你看到 NoSuchMethodError
,你首先应该检查的是你的编译和运行时依赖版本是否匹配。对于它的价值,我想不出类型擦除与 NoSuchMethodError
有任何关系的方式——如果有人因为擦除而匹配了错误的类型测试,你可能会看到 ClassCastException
,但即使在那种情况下,问题也不是真正的擦除,而是有人试图解决它(并忽略了编译器的警告)。