Я пытаюсь использовать REPL для тестирования моего кода Java.Я установил путь к классам и запустил REPL, и я смог получить доступ к своим классам приложений внутри REPL.
Я запустил метод, который выполняет вызов веб-службы, и он вызывает исключение java.lang.ClassCastException.Я написал Java-программу, которая делает то же самое, что и серия команд, введенных в REPL, и запускает ее с тем же путем к классам, она работает без проблем и дает результат.
Любые подсказки, почему это не такработает под скалой?Строгие ли правила приведения в 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)
Так как многие просят исходный код, чтобы ответить на этот вопрос, вот фрагмент, который я ввел в REPL Scala.Он делает вызовы 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
, и он запустился без выбросаЛюбое исключение, которое выше, но полученный результат равен нулю в обоих случаях
Кто-нибудь использовал Scala REPL для тестирования клиента, написанного из заглушек, сгенерированных weblogic 10.3 и успешно использовавших его?