gpt4 book ai didi

java - 无效类异常 : ; incompatible types for field

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:39 25 4
gpt4 key购买 nike

当从一个 VM 向另一个 VM 进行轮询 RMI 调用时,我遇到了一些零星的异常。类路径在 VM 之间看起来是一致的。我使用的是 64 位 java - jres 是一致的(jdk/v1.6.0_23-64bit)。VM 之间的 -XX:+UseCompressedOops 标志和 -XX:+UseConcMarkSweepGC 存在不一致,但我不知道这是否是根本原因?

调用(客户端)VM 设置了 -XX:+UseCompressedOops & -XX:+UseConcMarkSweepGC,调用 getStatistics() 的服务器 VM 没有。

有几点需要注意:-

  1. 遇到异常后,后续调用相同VM 在几天内都正常 - 即 Invalid ClassException是一个暂时性的问题。

  2. [class] 和 [fieldname] 每次都不同exception is 遇到异常java.io.InvalidClassException: [类];不兼容的类型字段[字段名]

使用 -XX:+UseCompressedOops64 位 VM 向另一个未设置为的 64 位 VM 进行 RMI 调用(序列化)是否有任何问题使用压缩的 oops?

堆栈:

java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.io.InvalidClassException: testserver.cluster.Status; incompatible types for field committed
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:173)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
at $Proxy14.getStatistics(Unknown Source)
at testserver.rm.RM$Check.run(RM.java:1593)
Caused by: java.io.InvalidClassException: testserver.cluster.Status; incompatible types for field committed
at java.io.ObjectStreamClass.matchFields(ObjectStreamClass.java:2210)
at java.io.ObjectStreamClass.getReflector(ObjectStreamClass.java:2105)
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:602)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:306)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:155)
... 4 more

谢谢你的帮助

最佳答案

您正在使用的 VM 是否默认启用此选项 (-XX:+UseCompressedOops),如果否,我建议禁用它并尝试一下。

可能是您正在使用的 JRE 更新中的一个错误,您可以在 Oracle 论坛中讨论它。

关于java - 无效类异常 : <class>; incompatible types for field <fieldname>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6842895/

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