我正在嘗試使用REPL來測試我的java代碼。我設置了我的類路徑並啓動了REPL,並且可以在REPL中訪問我的應用程序類。我如何使用Scala REPL來測試java代碼 - java和scala REPL給出不同的輸出
我推出了一個方法,它使Web服務調用,它拋出java.lang.ClassCastException。我編寫了一個java程序,它執行與在REPL中輸入的一系列命令相同的內容,並使用相同的類路徑運行它,它運行時沒有問題並給出結果。
爲什麼它不在scala下運行的任何線索? 在scala中鑄造的規則是否嚴格?如果我正在使用一個我無法控制的API,我該如何告訴Scala表現得像java一樣,以便我可以測試我的方法,這會使得大量的API調用和其他人編寫的代碼。
java.lang.ClassCastException: weblogic.webservice.encoding.ImageCodec cannot be cast to weblogic.xml.schema.binding.Serializer
at weblogic.xml.schema.binding.internal.XSDTypeMapping.addOptionalEntries(XSDTypeMapping.java:762)
at weblogic.xml.schema.binding.internal.XSDTypeMapping.createOptionalMapping(XSDTypeMapping.java:665)
at weblogic.xml.schema.binding.internal.XSDTypeMapping.createPrimaryMapping(XSDTypeMapping.java:655)
at weblogic.xml.schema.binding.internal.XSDTypeMapping.createInstance(XSDTypeMapping.java:138)
at weblogic.xml.schema.binding.internal.XSDTypeMapping.<clinit>(XSDTypeMapping.java:118)
at weblogic.xml.schema.binding.internal.TypeMappingFactoryBase.createDefaultMapping(TypeMappingFactoryBase.java:18)
at weblogic.webservice.core.encoding.DefaultRegistry.<init>(DefaultRegistry.java:110)
at weblogic.webservice.core.encoding.DefaultRegistry.<init>(DefaultRegistry.java:37)
at weblogic.webservice.core.rpc.ServiceImpl.<init>(ServiceImpl.java:91)
由於許多人都要求源代碼來回答這個問題,下面是我在scala REPL中輸入的代碼片段。它使API調用受版權保護,無法在此處共享,我可以回答問題以提供有關此問題的更多信息而不違反規範。
val clientManager=new ClientManager()
val client=clientManager.getClient(<clientId>)
/*client location is stored in another system which exposes its data as a webservice.
We use weblogic tools to compile the WSDL to create client (Web service client, not to
be confused with the client object which represent a customer) to access the system
hosting the data*/
val res=client.getLocation //exception is thrown at this line where a web-service call is made
我做了一些不同的,我得到了一個完全不同的異常這次 而不是使用val res=client.getLocation
我用client.getLocation
沒有將其分配給一個變量,這個時候拋出的異常是
java.lang.NoClassDefFoundError: Could not initialize class weblogic.xml.schema.binding.internal.XSDTypeMapping
at weblogic.xml.schema.binding.internal.TypeMappingFactoryBase.createDefaultMapping(TypeMappingFactoryBase.java:18)
at weblogic.webservice.core.encoding.DefaultRegistry.<init>(DefaultRegistry.java:110)
at weblogic.webservice.core.encoding.DefaultRegistry.<init>(DefaultRegistry.java:37)
at weblogic.webservice.core.rpc.ServiceImpl.<init>(ServiceImpl.java:91)
我跑解釋與-nobootcp
選項,它運行時沒有拋出任何異常,但在上述情況下,我得到的結果爲空
任何人usi ng Scala REPL測試從weblogic 10.3生成的存根編寫的客戶端,併成功使用它?
爲什麼這是被投票?我沒有找到任何有效的評論或理由對此進行投票。我已經驗證了我正確設置了類路徑和所有設置,我不確定爲什麼我只在Scala REPL中獲得此異常。我對scala很陌生,只是嘗試着使用它。任何意見或反應將有所幫助,請提供一些提示,爲什麼你認爲這個問題是不正確或無效 – tutysara
包括一些代碼....單獨堆棧跟蹤是不夠的 – rana
嗨拉納,我不能包括剩餘的代碼,因爲他們是版權和他們是我們客戶特定的API。我想堆棧跟蹤中有足夠的信息。我們正在嘗試將weblogic.webservice.encoding.ImageCodec強制轉換爲不允許的weblogic.xml.schema.binding.Serializer。但是,如果從具有相同類路徑的java main方法中調用相同的API調用,則不會產生此類轉換異常。包weblogic。*是weblogic API的一部分,我們已將它們包含在我們的類路徑中。 – tutysara