我将使用Scala 2.9.1版本进行翻译。
我定义了一个Logging trait,如下所示:
这一切都编译得很好。我的问题是,我有一个用户想将我的JMSPublisher加载到Spring中。他正在使用Spring 2.5.6。
当ApplicationContext在启动期间被加载时,应用程序会崩溃,并出现IllegalStateException,抱怨找不到与我的Logging特性相关的桥接方法。
我定义了一个Logging trait,如下所示:
trait Logging {
def debug(msg: String, throwables: Throwable*) = ....
....
}
我有一个JMSPublisher类,其中混合了Logging trait:
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中将一些方法标记为桥接方法。我认为这是导致Spring失败的原因。如果我的类无法被Spring加载,我就无法升级到Scala-2.9。
有人遇到过这个问题吗?有没有解决方案或解决方法?