estoy usando Scala 2.9.1Scala 2.9 Puente-Método
He definido un rasgo de registro como tal:
trait Logging {
def debug(msg: String, throwables: Throwable*) = ....
....
}
Y tengo una clase JMSPublisher que se mezcla en el rasgo de registro :
class JMSPublisher extends Publisher with Logging {
def publishProducts(list: List[_ <: Product]) = ....
def publish(list: Seq[Product]) = ....
}
Todo esto compila bien. Mi problema es que tengo un usuario que quiere cargar mi JMSPublisher en Spring. Él está usando Spring 2.5.6.
Cuando ApplicationContext se carga durante el inicio, la aplicación se bloquea con una IllegalStateException, quejándose de que no puede encontrar un método de puente relacionado con mi rasgo de registro.
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.......
Este código trabajó bajo Scala-2.8, y oí que Scala está marcando rasgo que tienen algunos métodos como puente en 2,9. Creo que esto es lo que está causando que Spring falle. No puedo actualizar a Scala-2.9 si mi clase no puede ser cargada por Spring.
¿Alguien se ha encontrado con este problema? ¿Hay alguna solución o solución alternativa?
Creo que estamos obteniendo algo similar, afortunadamente no afecta nuestra aplicación actual, solo Spring IDE que marca algunos beans con errores, ya que se queja de que algunos de los métodos definidos por los rasgos no existen. – Nick
Vea esto: http://stackoverflow.com/questions/8748625/why-are-concrete-function-implementations-in-traits-compiled-to-bridge-methods-i – Janx