Я использую Скала 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. Я думаю, что это то, что приводит к сбою Spring. Я не могу перейти на Scala-2.9, если Spring не может загрузить мой класс.
Кто-нибудь сталкивался с этой проблемой? Есть ли какое-либо исправление или обходной путь?