zeiss-digital-innovation / SynchronizeFX

JavaFX data-binding between JVMs over the network

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Serialization Fehler

Tobisaninfo opened this issue · comments

Hallo,
Ich versuche SynchronizeFX für meine JavaFX Anwendung zu nutzen, aber auf Client Seite bekomme ich immer eine Exception. Die firstNameProperty (siehe Fehler) ist eine StringProperty (genau eine SimpleStringProperty). Wenn das Datenmodell für die Lösung des Problems wichtig ist, sagen Sie bitte bescheid.
Viele Grüße

Serialization trace:

firstNameProperty (de.tobias.physio.data.Subject)
simpleObjectValue (de.saxsys.synchronizefx.core.metamodel.commands.Value)
value (de.saxsys.synchronizefx.core.metamodel.commands.AddToList)
    at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:626)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
    at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:651)
    at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
    at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:651)
    at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
    at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
    at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:732)
    at com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:109)
    at com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:18)
    at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:629)
    at de.saxsys.synchronizefx.kryo.KryoSerializer.deserialize(KryoSerializer.java:93)
    at de.saxsys.synchronizefx.netty.base.CommandToBinaryByteBuf.decode(CommandToBinaryByteBuf.java:61)
    at de.saxsys.synchronizefx.netty.base.CommandToBinaryByteBuf.decode(CommandToBinaryByteBuf.java:37)
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89)
    ... 18 more
Caused by: java.lang.IllegalArgumentException: Can not set javafx.beans.property.StringProperty field de.tobias.physio.data.Subject.firstNameProperty to de.saxsys.synchronizefx.core.metamodel.commands.AddToList
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
    at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)
    at java.lang.reflect.Field.set(Field.java:764)
    at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:619)
    ... 34 more

Der Fehler entstand durch folgende Property: ObjectProperty

Wenn ich dich richtig verstehe, war es in deinem Code und nicht durch die Bibliothek verursacht?
Kannst du trotzdem nochmal kurz beschreiben, was das Problem und was die Lösung war? Vielleicht hat jemand anders ähnliche Probleme und findet hierdurch hilfe. Oder wir müssen etwas in der Doku ergänzen.

Ich hatte in einem Objekt, welches serializert werden sollte, eine ObjectProperty. Dieses Objekt war in er Liste. Da gab es Problem und er hat sich manchmal vom Server einfach getrennt oder es gab eine Exception. Meine Lösung ist nun das ich leider mit einer LongProperty arbeite und so das Datum immer umwandeln muss. Nicht schön aber es geht wenigstens. Also glaube ich, das der Fehler bei Seiten von euch liegen muss.

In dem Fall wäre es cool, wenn du ein bisschen Beispielcode zeigen könntest, bei dem der Fehler auftritt, damit wir eventuelle Fehler in der Bibliothek finden und fixen können.

Ich kann leider nur Ausschnitte reinstellen, da es sonst zu viel wird. Aber es sollte reichen, da die Methoden unwichtig scheinen. Wenn nicht sag mir bitte bescheid.
public class Team {
private StringProperty nameProperty;
private ListProperty subjectsProperty;

public Team() {
    nameProperty = new SimpleStringProperty();
    subjectsProperty = new SimpleListProperty<>(FXCollections.observableArrayList());
}

}

public class Subject {

private UUID uuid;
private StringProperty firstNameProperty;
private StringProperty lastNameProperty;
private ObjectProperty<LocalDate> birthProperty;

   // Unwichtig für den Fall
private ObjectProperty<Activity> mainActivityProperty;
private ObservableSet<Complaint> complaints;
private ObservableList<Test> testsList;
private ObjectProperty<Test> lastTestProperty;

private WeakReference<Team> team;

private Subject() {
    uuid = UUID.randomUUID();

    firstNameProperty = new SimpleStringProperty();
    lastNameProperty = new SimpleStringProperty();
    birthProperty = new SimpleObjectProperty<>();
    mainActivityProperty = new SimpleObjectProperty<>();
    lastTestProperty = new SimpleObjectProperty<>();
    testsList = FXCollections.observableArrayList();
    complaints = FXCollections.observableSet();
}

}

Leider kann ich die Exception auf die schnelle nicht deuten. Am Code-Beispiel sehe ich aber, dass ObjectProperty<LocalDate> eventuell problematisch ist. SynchronizeFX verwendet Kryo zur Serialisierung von allem was keine Property ist. Die Datumsklassen von Joda-Time scheint Kryo nicht nicht Out-of-the-Box zu unterstützen. Man kann aber eigene Serialisierer für solche Klassen registrieren, für den Client hier und für den Server hier. So kann man diese Klassen trotzdem in seinen Domainobjekten verwenden.

Damit kann man z.B. auch Serialisierer schreiben, die für einzelne Klassen effizientere sind als ein generischen Serialisierer. SynchronizeFX bringt z.B. von Haus aus einen optimierten Serialisierer für UUIDs mit.

Danke für die Hilfe. Es hat jetzt mit LocalDate auch funktioniert.

Leider musste ich jetzt feststellen, das es doch nicht erfolgreich war. Leider habe ich auch absolut keine Ahnung woran es liegen kann. Es wäre super, wenn du mir helfen kannst, den Fehler zu finden. Ich habe zum Nachvollziehen den Code auf github gestellt.

Zur Erklären: der Client wird in der PhysioMain gestartet und alle interessanten Datenmodell Klassen sind in de.tobias.physio.data.

Hier ist der Stacktrace:

[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: de.saxsys.synchronizefx.core.exceptions.SynchronizeFXException: An error occured while trying to communicate with the server.
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at de.saxsys.synchronizefx.netty.base.client.NetworkEventHandlerClient.exceptionCaught(NetworkEventHandlerClient.java:78)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at de.saxsys.synchronizefx.netty.base.client.NetworkEventHandlerClient$1.operationComplete(NetworkEventHandlerClient.java:92)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:679)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:565)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:425)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.channel.AbstractChannelHandlerContext.notifyOutboundHandlerException(AbstractChannelHandlerContext.java:751)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:660)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:716)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:651)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at de.saxsys.synchronizefx.netty.base.client.NetworkEventHandlerClient.write(NetworkEventHandlerClient.java:96)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:658)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.channel.AbstractChannelHandlerContext.access$2000(AbstractChannelHandlerContext.java:32)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:939)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:991)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:924)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:370)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at java.lang.Thread.run(Thread.java:745)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: Caused by: io.netty.handler.codec.EncoderException: com.esotericsoftware.kryo.KryoException: java.util.ConcurrentModificationException
Serialization trace:
classes (sun.misc.Launcher$ExtClassLoader)
classloader (java.security.ProtectionDomain)
context (java.security.AccessControlContext)
acc (javafx.scene.Scene)
value (javafx.scene.Node$ReadOnlyObjectWrapperManualFire)
scene (com.sun.javafx.scene.control.skin.LabeledText)
bottom (javafx.scene.control.TableColumn$1$1)
arg$1 (javafx.scene.control.TableCell$$Lambda$314/975386937)
referent (java.lang.ref.WeakReference)
ref (javafx.beans.WeakInvalidationListener)
listener (com.sun.javafx.binding.ExpressionHelper$SingleInvalidation)
helper (javafx.beans.binding.IntegerExpression$3)
referent (java.lang.ref.WeakReference)
ref (com.sun.javafx.binding.BindingHelperObserver)
listener (com.sun.javafx.binding.ExpressionHelper$SingleInvalidation)
helper (javafx.beans.binding.Bindings$4)
referent (java.lang.ref.WeakReference)
ref (com.sun.javafx.binding.BindingHelperObserver)
listener (com.sun.javafx.binding.ExpressionHelper$SingleInvalidation)
helper (javafx.beans.property.SimpleIntegerProperty)
simpleObjectValue (de.saxsys.synchronizefx.core.metamodel.commands.Value)
value (de.saxsys.synchronizefx.core.metamodel.commands.PutToMap)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:107)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.handler.codec.MessageToMessageCodec.write(MessageToMessageCodec.java:116)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:658)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: ... 13 more
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: Caused by: com.esotericsoftware.kryo.KryoException: java.util.ConcurrentModificationException
Serialization trace:
classes (sun.misc.Launcher$ExtClassLoader)
classloader (java.security.ProtectionDomain)
context (java.security.AccessControlContext)
acc (javafx.scene.Scene)
value (javafx.scene.Node$ReadOnlyObjectWrapperManualFire)
scene (com.sun.javafx.scene.control.skin.LabeledText)
bottom (javafx.scene.control.TableColumn$1$1)
arg$1 (javafx.scene.control.TableCell$$Lambda$314/975386937)
referent (java.lang.ref.WeakReference)
ref (javafx.beans.WeakInvalidationListener)
listener (com.sun.javafx.binding.ExpressionHelper$SingleInvalidation)
helper (javafx.beans.binding.IntegerExpression$3)
referent (java.lang.ref.WeakReference)
ref (com.sun.javafx.binding.BindingHelperObserver)
listener (com.sun.javafx.binding.ExpressionHelper$SingleInvalidation)
helper (javafx.beans.binding.Bindings$4)
referent (java.lang.ref.WeakReference)
ref (com.sun.javafx.binding.BindingHelperObserver)
listener (com.sun.javafx.binding.ExpressionHelper$SingleInvalidation)
helper (javafx.beans.property.SimpleIntegerProperty)
simpleObjectValue (de.saxsys.synchronizefx.core.metamodel.commands.Value)
value (de.saxsys.synchronizefx.core.metamodel.commands.PutToMap)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:585)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:571)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:318)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:293)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObjectOrNull(Kryo.java:552)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:570)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:213)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:571)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:75)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:18)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:489)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at de.saxsys.synchronizefx.kryo.KryoSerializer.serialize(KryoSerializer.java:69)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at de.saxsys.synchronizefx.netty.base.CommandToBinaryByteBuf.encode(CommandToBinaryByteBuf.java:67)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at de.saxsys.synchronizefx.netty.base.CommandToBinaryByteBuf.encode(CommandToBinaryByteBuf.java:37)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.handler.codec.MessageToMessageCodec$1.encode(MessageToMessageCodec.java:67)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: ... 15 more
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: Caused by: java.util.ConcurrentModificationException
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at java.util.Vector$Itr.checkForComodification(Vector.java:1184)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at java.util.Vector$Itr.next(Vector.java:1137)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:67)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:18)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:504)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.write(FieldSerializer.java:564)
[Physio] 09-10-16 11:14:21 [java.lang.Throwable$WrappedPrintStream.println:748]: ... 91 more

Wenn ich in dem Repository nach SynchronizeFX oder Serializer suche bekomme ich keine Treffer. Ein ganzes Repository nach einem potentiellen SynchronizeFX Fehler zu durchsuchen ist mir ehrlich gesagt auch zu viel Aufwand. Wenn du das Problem mit 2-3 Klassen nachstellen kannst, dann kann ich es mir anschauen.

Es scheint, als würde der Bug durch einen ganz merkwürdigen Fehler in Kombination mit Optional ergeben haben. Ich kann leider keinen Bug reproduzierenden Code zur Verfügung stellen, da er von zu vielen (auch GUI) Komponenten abhängig ist. So wie es scheint, ist er aber behoben.