带有readObject()方法的ClassNotFoundException

时间:2014-05-05 17:35:54

标签: java classnotfoundexception objectinputstream

我正在尝试从Internet中的文件中读取对象。我被赋予了对象类,即:

import java.io.Serializable;


public class Sulearvuti extends Arvuti implements Serializable {

    private static final long serialVersionUID = 1L;

    //isendiväli
    private int aku;


    //konstruktor
    public Sulearvuti(String tootja, String mudel, String lisainfo,
            int järjekorraNumber, int raskusaste, boolean kiirtellimus, int aku)
            throws ValeRaskusAsteErind {
        super(tootja, mudel, lisainfo, järjekorraNumber, raskusaste,
                kiirtellimus);
        this.aku = aku;
    }

    // meetod toString, kasutama ülemklassi meetodit
    public String toString() {
        return "Sülearvuti [aku=" + aku + ", " + super.toString() + "]";
    }

    // meetodi ülekatmine
    double parandamiseAeg(){
        return this.getRaskusaste()*2;
    }


}

现在,当我试图读取对象(Sulearvuti)时,我得到了ClassNotFoundException。这是一段代码:

ObjectInputStream ois = 
    new ObjectInputStream (
        new URL("http://www.ut.ee/~marinai/sulearvutid.dat")
        .openConnection()
        .getInputStream());

int arv=ois.readInt();
Sulearvuti sülearvuti=(Sulearvuti)ois.readObject();

整数没有问题,但它无法识别该类。我在过去一小时左右一直在绝望......

这里也是超类“Arvuti”的代码:

import java.io.Serializable;

public class Arvuti implements  Serializable, Comparable<Arvuti> {

private String tootja;
private String mudel;
private String lisainfo;
private int jrnumber;
private int vea_raskusaste;
private boolean kiirtellimus;
String getTootja() {
    return tootja;
}
String getMudel() {
    return mudel;
}
String getLisainfo() {
    return lisainfo;
}
int getJrnumber() {
    return jrnumber;
}
int getVea_raskusaste() {
    return vea_raskusaste;
}
boolean isKiirtellimus() {
    return kiirtellimus;
}
void setTootja(String tootja) {
    this.tootja = tootja;
}
void setMudel(String mudel) {
    this.mudel = mudel;
}
void setLisainfo(String lisainfo)throws WindowsXPErind {
    this.lisainfo = lisainfo;
    if(lisainfo.contains("WindowsXP"))throw new WindowsXPErind();

}
void setJrnumber(int jrnumber) {
    this.jrnumber = jrnumber;
}
void setVea_raskusaste(int vea_raskusaste)throws ValeRaskusAsteErind {
    if(vea_raskusaste<1 || vea_raskusaste>10) throw new ValeRaskusAsteErind();
    this.vea_raskusaste = vea_raskusaste;
}
void setKiirtellimus(boolean kiirtellimus) {
    this.kiirtellimus = kiirtellimus;
}
Arvuti(String tootja, String mudel, String lisainfo, int jrnumber,
        int vea_raskusaste, boolean kiirtellimus)throws ValeRaskusAsteErind {
    try{
    setTootja( tootja);
    setMudel(mudel);    
    setJrnumber(jrnumber);
    setVea_raskusaste(vea_raskusaste);
    setKiirtellimus(kiirtellimus);
    setLisainfo(lisainfo);
    }
    catch (WindowsXPErind e){
        System.out.println("WindowsXPErind");
        setVea_raskusaste(vea_raskusaste+2);
    }
}
double parandamiseAeg(){
    return getVea_raskusaste()*1.5;
}
public String toString() {
    return "Arvuti [tootja=" + tootja + ", mudel=" + mudel + ", lisainfo="
            + lisainfo + ", järjekorranumber=" + jrnumber + ", vea raskusaste="
            + vea_raskusaste + ", kiirtellimus=" + kiirtellimus
            + ", parandamise aeg=" + parandamiseAeg() + "]";
}
public int compareTo(Arvuti arvuti){
    if(this.isKiirtellimus()==true && arvuti.isKiirtellimus()==false) return -1;
    else if(this.isKiirtellimus()==false && arvuti.isKiirtellimus()==true) return 1;
    else{
        if(this.getJrnumber()<arvuti.getJrnumber())return -1;
        else if(this.getJrnumber()>arvuti.getJrnumber())return 1;
        else return 0;
    }
}

}

线程“main”中的异常java.lang.Error:未解决的编译问题:

Unhandled exception type ClassNotFoundException

at Peaklass.main(Peaklass.java:36)

2 个答案:

答案 0 :(得分:1)

您缺少.dat文件中包含的某些类。查找classnotfound异常中显示的类名。

仅仅拥有“Sulearvuti”是不够的,你还需要在你的类路径中使用“Arvuti”(超类)和“ValeRaskusAsteErind”(例外)。

这个语言对我来说很有趣,这是什么语言?

答案 1 :(得分:0)

&#34; Sulearvuti&#34;尝试反序列化对象的应用程序的类路径上的类?