scala - 从外部 .jar 运行代码时出现 java.lang.NoSuchMethodError
问题描述
我有一段代码在运行时抛出我无法解决的 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]] = ...
}
我认为这是因为类型擦除而发生的......有人可以帮助我理解这个问题吗?
解决方案
正如我在上面的评论中提到的,任何时候你看到 a NoSuchMethodError
,你首先应该检查的是你的编译和运行时依赖版本是否匹配。对于它的价值,我想不出一种类型擦除与 a 有任何关系的方式——如果有人因为擦除而匹配的类型测试不好,NoSuchMethodError
你可能会看到 a ,但即使在那种情况下,问题也不是ClassCastException
真正的擦除,这是有人试图解决它(并且忽略了编译器的警告)的事实。
推荐阅读
- css - 处理多列布局中的分栏符
- c++ - 在定义和构造函数中初始化变量 - 使用
- ole - 使用 OLE 对象定义从 ACUCOBOL 创建 winword
- c# - 列表项模板中的 WPF 嵌套列表视图
- atlaskit - 带有自定义提及提供程序的 Atlaskit Editor Core
- javascript - 为什么需要在 Web 组件中克隆模板的内容
- python - Google App Engine / Datastore / Flask / Python app 中的内存泄漏
- javascript - 试图将多个数组的数组连接成一个数组
- java - Java:如何从公司域发送电子邮件
- python-3.x - Django 本地主机重定向太多次