Java中更改了类名的奇怪错误

Java中更改了类名的奇怪错误,java,jira,jira-plugin,kryo,Java,Jira,Jira Plugin,Kryo,我正在使用kryo lib序列化对象。我得到一个错误: Unable to find class: java.util.ArrayLisoSerialization 而队友们也会重复这个错误。。。似乎Kryo的java类名已经更改(ArrayListSerialization->ArrayListSerialization)。这是在两台计算机(linux和windows,都是jdk7)上测试的,问题只出现在我的计算机(linux)上。我试图将Java版本从jdk7(Build67)更改为jdk

我正在使用kryo lib序列化对象。我得到一个错误:

Unable to find class: java.util.ArrayLisoSerialization
而队友们也会重复这个错误。。。似乎Kryo的java类名已经更改(ArrayListSerialization->ArrayListSerialization)。这是在两台计算机(linux和windows,都是jdk7)上测试的,问题只出现在我的计算机(linux)上。我试图将Java版本从jdk7(Build67)更改为jdk8,但问题仍然出现

知道为什么会这样吗

错误跟踪的较大部分:

com.esotericsoftware.kryo.KryoException: Unable to find class: java.util.ArrayLisoSerialization trace:messages  at com.esotericsoftware.kryo.util.DefaultClassResolver.readName(DefaultClassResolver.java:138)  at com.esotericsoftware.kryo.util.DefaultClassResolver.readClass(DefaultClassResolver.java:115) at com.esotericsoftware.kryo.Kryo.readClass(Kryo.java:666)  at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:99)  at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:528) at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:682)...

这看起来像是kryo中的某个地方或项目中的配置文件中的输入错误。 我会先对你的项目文件进行字符串搜索

乍一看,这是一个错误:

String className = input.readString();
....
type = Class.forName(className, false, kryo.getClassLoader());
问题在于它看到的数据。您的序列化内容包含您提到的错误类,如className

我不知道这是怎么导致这样写的,因为我会假设java.util.ArrayListSerialization最初是编写的,但不知怎的被破坏了

不过,我对Kryo不太熟悉。是否将其写入人类可读的文本文件?如果是这样的话,这可能是手动读取文件时的意外替换。(用vi、记事本或其他东西)。从我所看到的,inputstream被简单地读取,并且一个字符串被打开

我将打开数据文件,查看是否存在字符串java.util.ArrayLisationalization。 我假设应该将其更改为java.util.ArrayListSerialization


但是对您正在修改的任何数据进行备份。更改序列化数据时应始终能够安全地恢复到原始数据

我试图在我的项目中找到拼写错误,但没有错误。Kryo是一个开源项目,所以我会检查他们的项目是否有任何错误errors@ElSzarry更新了我的答案。我浏览了整个stacktrace,LisoSerialization显然来自输入流。所以磁盘上的文件或数据库中的blob包含错误的值。我找不到任何错误。在虚拟盒上安装Windows后,错误不会出现。我不知道是什么问题,但我认为这可以放在我的linux环境中。谢谢你的帮助Joeblade:)