我使用Scala的2.9.1斯卡拉2.9橋法
我的測井特徵這樣:
trait Logging {
def debug(msg: String, throwables: Throwable*) = ....
....
}
而且我有一個JMSPublisher類混合,在記錄特質:
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。
有沒有人遇到過這個問題?是否有任何修復或解決方法?
我想我們得到了類似的東西 - 幸運的是它不影響我們的實際應用程序,只是Spring IDE標記了一些錯誤的bean,因爲它抱怨說某些特徵定義的方法不存在。 – Nick
看到這個:http://stackoverflow.com/questions/8748625/why-are-concrete-function-implementations-in-traits-compiled-to-bridge-methods-i – Janx