gpt4 book ai didi

java - 如何使用 Scala REPL 来测试 java 代码 - java 和 scala REPL 给出不同的输出

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:47 26 4
gpt4 key购买 nike

我正在尝试使用 REPL 来测试我的 java 代码。我已经设置了类路径并启动了 REPL,我可以在 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 选项运行解释,它运行时没有抛出上面的任何异常,但在这两种情况下我得到的结果都是 null

有人使用 Scala REPL 来测试由 weblogic 10.3 生成的 stub 编写的客户端并成功使用它吗?

最佳答案

您的堆栈跟踪与 Scala 无关。异常发生在某些 weblogic 代码深处。您认为为什么 Scala 会导致这个问题?最可能的原因是库不匹配,例如您在 Scala 测试中使用的类路径与 Java 测试中不同。

不过,我会尝试回答您隐含的问题:对于可以在 Java 和 Scala 中等效表达的引用类型,Scala 的转换规则与 Java 的相同。

关于java - 如何使用 Scala REPL 来测试 java 代码 - java 和 scala REPL 给出不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8342276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com