若將如下代碼放入idea中會報出Exception in thread “main” java.lang.NoClassDefFoundError: HomeWork/Book (wrong name: HomeWork/BOOK)at java.lang.ClassLoader.defineClass1(Native Method)…錯誤
package HomeWork;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
//創建一個書籍對象,並把它輸出到一個文件book.dat中,然後再把該對象讀出來,在屏幕上顯示對象信息
public class BOOK{
@SuppressWarnings("serial")
class Book implements Serializable {
int id;
String name;
String author;
float price;
public Book(int id,String name,String author,float price) {
this.id=id;
this.name=name;
this.author=author;
this.price=price;
}
}
public static void main(String args[]) throws
IOException,ClassNotFoundException {
Book book=new Book(010313, "blackpink", "RanLuYao", 66);
ObjectOutputStream oos=new ObjectOutputStream(
new FileOutputStream("D:/book.dat"));
oos.writeObject(book);
oos.close();
book=null;
ObjectInputStream ois=new ObjectInputStream(
new FileInputStream("D:/book.dat"));
book=(Book)ois.readObject();
ois.close();
System.out.println("ID is:"+book.id);
System.out.println("name is:"+book.name);
System.out.println("author is:"+book.author);
System.out.println("price is:"+book.price);
}
}
此時查閱資料發現是無法找到路徑或classpath配置錯誤,但最終檢查發現自己是.java文件包含了包層次所導致的問題。
解決方法:去掉包,並將文件分成兩個.java文件放入兩個類中,就可以運行出結果
【若只是想要完成作業可以考慮這個方法,更深入的瞭解可以關注以下網址】
文章地址:
https://blog.csdn.net/xw13106209/article/details/6861855?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase