मैं स्काला 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]) = ....
}
यह सब ठीक संकलित करता है। मेरी समस्या यह है कि मेरे पास एक ऐसा उपयोगकर्ता है जो मेरे जेएमस्पब्लिशर को स्प्रिंग में लोड करना चाहता है। वह वसंत 2.5.6 का उपयोग कर रहा है।
जब स्टार्टअप के दौरान एप्लिकेशन कॉन्टेक्स्ट लोड किया जाता है, तो ऐप एक अवैध स्टाइल अपवाद के साथ क्रैश हो जाता है, शिकायत करता है कि यह मेरे लॉगिंग विशेषता से संबंधित ब्रिज-विधि नहीं ढूंढ सकता है।
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.......
इस कोड को स्काला 2.8 के तहत काम किया, और मैंने सुना है कि स्काला विशेषता के रूप में 2.9 में पाट कुछ तरीकों है कि अंकन है। मुझे लगता है कि वसंत असफल होने के कारण यही है। मैं स्काला-2.9 में अपग्रेड नहीं कर सकता अगर मेरी कक्षा वसंत द्वारा लोड नहीं की जा सकती है।
क्या कोई इस मुद्दे में भाग लेता है? क्या कोई फिक्स या काम-आसपास है?
मुझे लगता है कि हमें कुछ मिल रहा है - सौभाग्य से यह हमारे वास्तविक ऐप को प्रभावित नहीं कर रहा है, बस स्प्रिंग आईडीई जो कुछ बीन्स को त्रुटियों के साथ चिह्नित करता है क्योंकि यह शिकायत करता है कि कुछ विशेषता-परिभाषित विधियां मौजूद नहीं हैं। – Nick
इसे देखें: http://stackoverflow.com/questions/8748625/why-are-concrete-function-implementations-in-traits-compiled-to-bridge-methods-i – Janx