如何在kryonet中注册JavaFX类?

如何在kryonet中注册JavaFX类?,java,javafx,kryonet,Java,Javafx,Kryonet,我需要一些关于Kryonet lib的帮助。 我创建了一个服务器,其中有一个网络类用于注册我的类。 但是我使用JavaFX,我不能注册我需要的所有类 这项工作: kryo.register(ArrayList.class); kryo.register(ImageView.class); 但在Kryonet中,当我想发送ImageView时,Kryo需要注册ImageView的所有属性,比如节点方向。我不能这样做,因为我犯了这个错误: Caused by: java.lang.IllegalA

我需要一些关于Kryonet lib的帮助。 我创建了一个服务器,其中有一个网络类用于注册我的类。 但是我使用JavaFX,我不能注册我需要的所有类

这项工作:

kryo.register(ArrayList.class);
kryo.register(ImageView.class);
但在Kryonet中,当我想发送ImageView时,Kryo需要注册ImageView的所有属性,比如节点方向。我不能这样做,因为我犯了这个错误:

Caused by: java.lang.IllegalArgumentException: Class is not registered: javafx.scene.Node$EffectiveOrientationProperty
Note: To register this class use: kryo.register(javafx.scene.Node$EffectiveOrientationProperty.class);
但是节点$EffectiveOrientationProperty不是一个类。对于Kryo来说,仅仅注册Node.class是不够的

有人帮我吗


多谢各位。很抱歉我的英语不好。

无法创建渲染图像(
ImageView
),传输渲染并期望它们在接收端兼容-这没有任何意义,因为java对象绑定到本地VM,在您的情况下,
ImageView
也绑定到本地JFX上下文和渲染管道-这些是针对您环境的图像,它们在其他任何地方都不起作用。如果你想传输图像,你需要发送和接收文件本身——确切地说是它们的字节数组内容。我明白(我想:p),但在我的应用程序中,我需要服务器向所有TCP发送一个ArrayList。因为我需要所有的客户都有相同的名单。再说一次:那是不可能的。在不同的机器上不能有两个相同的列表——这不是计算机(或者JVM)的工作方式。但是,您可以有两个包含相同图像数据值的列表——这些列表并不完全相同,但是图像看起来与人眼完全相同(因为它们的数据是相同的)。您需要传输字节数组列表。无法创建渲染图像(
ImageView
),传输渲染并期望它们在接收端兼容-这没有任何意义,因为java对象绑定到本地VM,在您的情况下,
ImageView
也绑定到本地JFX上下文和渲染管道-这些是针对您环境的图像,它们在其他任何地方都不起作用。如果你想传输图像,你需要发送和接收文件本身——确切地说是它们的字节数组内容。我明白(我想:p),但在我的应用程序中,我需要服务器向所有TCP发送一个ArrayList。因为我需要所有的客户都有相同的名单。再说一次:那是不可能的。在不同的机器上不能有两个相同的列表——这不是计算机(或者JVM)的工作方式。但是,您可以有两个包含相同图像数据值的列表——这些列表并不完全相同,但是图像看起来与人眼完全相同(因为它们的数据是相同的)。您需要传输字节数组的列表。