Java Netbeans ClassNotFoundException
我看到了关于这个话题的各种帖子,但它们对我没有帮助。我删除了我的Netbeans缓存,但未检查保存时编译。我只是尝试加载一个.dat文件并使用其中序列化的数据。它在JavaEditor中工作得很好,但我在Netbeans中得到了错误Java Netbeans ClassNotFoundException,java,netbeans,Java,Netbeans,我看到了关于这个话题的各种帖子,但它们对我没有帮助。我删除了我的Netbeans缓存,但未检查保存时编译。我只是尝试加载一个.dat文件并使用其中序列化的数据。它在JavaEditor中工作得很好,但我在Netbeans中得到了错误java.lang.ClassNotFoundException:Example 我用来加载.dat的代码: public static void load(){ ArrayList<Example> ex = new ArrayList<
java.lang.ClassNotFoundException:Example
我用来加载.dat的代码:
public static void load(){
ArrayList<Example> ex = new ArrayList<Example>();
FileInputStream fis;
ObjectInputStream ois;
try{
fis = new FileInputStream("ExampleList.dat");
ois = new ObjectInputStream (fis);
while (fis.available()>0){
Example exam = (Example)ois.readObject();
ex.add(exam);
}
ois.close();
fis.close();
} catch (Exception e){
System.out.println(e);
}
在main方法中执行一些操作,如
Example ex=new Example()代码>工作得非常好,因此netbeans应该已经找到了类 这是一个类版本兼容性问题
问题,这是因为您在尝试反序列化的序列化对象之后对类进行了更改,因此新生成的serialVersionUID
不等于上一个
因此,您必须声明静态长SerialVersionId
,这样您就可以安全地对类进行更改
还要检查堆栈溢出
希望对您有所帮助。显示完整的堆栈跟踪和导入的完整代码,我所做的唯一更改是将其添加到包中。。我甚至没有添加属性之类的东西。是否可以像以前一样更改并继续使用此.dat,或者我实际上必须创建一个新的?检查java文档第5.6.1节不兼容的更改:第2点:“在层次结构中向上或向下移动类-这是不允许的,因为流中的数据以错误的顺序出现。”
package ExampleTest;
import java.io.*;
public class Example implements Serializable{
private String name;
public Example(){
}
//Getter and Setter
}