我正在使用 Scala 2.9.1
我已经这样定义了一个 Logging 特征:
trait Logging {
def debug(msg: String, throwables: Throwable*) = ....
....
}
我有一个 JMSPublisher 类,它混合了 Logging 特征:
class JMSPublisher extends Publisher with Logging {
def publishProducts(list: List[_ <: Product]) = ....
def publish(list: Seq[Product]) = ....
}
这一切都编译得很好。我的问题是我有一个用户想要将我的 JMSPublisher 加载到 Spring 中。他正在使用 Spring 2.5.6。
在启动期间加载 ApplicationContext 时,应用程序崩溃并出现 IllegalStateException,抱怨它找不到与我的 Logging 特征相关的桥接方法。
Initialization of bean failed; nested exception is java.lang.IllegalStateException: Unable to locate bridged method for bridge method 'public void com.app.messaging.JmsPublisher.debug(java.lang.String, scala.collection.Seq)'
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
.....stack trace follows.......
这段代码在 Scala-2.8 下工作,我听说 Scala 正在标记具有一些在 2.9 中桥接的方法的 trait。我认为这就是导致 Spring 失败的原因。如果 Spring 无法加载我的类,我将无法升级到 Scala-2.9。
有没有人遇到过这个问题?是否有任何修复或解决方法?