InvalidClassException: ; несовместимые типы для поля

Я получаю некоторые спорадические исключения при выполнении опроса вызовов RMI от одной виртуальной машины к другой. Пути к классам между виртуальными машинами выглядят одинаково. Я использую 64-битную java - jres согласованы (jdk / v1.6.0_23-64bit) . Существует несоответствие во флаге -XX: + UseCompressedOops и -XX: + UseConcMarkSweepGC между виртуальными машинами, но я не знаю, может ли это быть основной причиной?

Вызывающая (клиентская) виртуальная машина имеет -XX: + UseCompressedOops & -XX: + UseConcMarkSweepGC set, серверная виртуальная машина, на которой выполняется вызов getStatistics () , не работает.

Пара замечаний: -

  1. После возникновения исключения последующие вызовы между тем же Виртуальные машины работают в течение нескольких дней, т.е. исключение Invalid ClassException. это временная проблема.

  2. [class] и [fieldname] меняются каждый раз, когда исключение встречается там, где исключение java.io.InvalidClassException: [класс]; несовместимые типы для field [fieldname]

Есть ли проблема с выполнением вызовов RMI (сериализация) из 64-битной виртуальной машины с -XX: + UseCompressedOops на другую 64-битную виртуальную машину, которая не установлена до использования сжатых файлов?

Стек:

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

спасибо за вашу помощь

15
задан Nomesh DeSilva 26 May 2015 в 13:29
поделиться