【发布时间】:2011-12-22 07:55:00
【问题描述】:
我使用的是 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。
有人遇到过这个问题吗?是否有任何修复或解决方法?
【问题讨论】:
-
我认为我们得到了类似的东西 - 幸运的是它不会影响我们的实际应用程序,只是 Spring IDE 会标记一些带有错误的 bean,因为它抱怨某些 trait 定义的方法不存在。跨度>
标签: java spring scala reflection scala-2.9