2

Java で最初の I/O ベースのものを作成しました。ファイルに書き込んだ内容が正しく保存されているか確認したい。私は次のコードを書きました..

    import java.io.*;

    public class check implements Serializable {
        //Make two variables and methods to initialise them
        private int height;
        private int width;
        public void setWidth(int w){
            width = w;
        }
        public void setHeight(int h){
            height = h;
        }
        public static void main(String[] args) {

        check obj = new check();
        obj.setHeight(20);
        obj.setWidth(30);

    try{
        FileOutputStream fs = new FileOutputStream("foo.txt");
        ObjectOutputStream os = new ObjectOutputStream(fs);
        os.writeObject(obj);
        os.close();
    }
    catch(IOException ex){
    }
    //We set them to null so we can't access the objects on heap.
      obj = null;  

    //Now we read them back from file   
    try{
        ObjectInputStream is = new ObjectInputStream(new FileInputStream("foo.txt")); 
        check stored = (check) is.readObject();

    //Check to see if it worked.
     System.out.println("Variable, stored contains.." + stored.getType());
    }
    catch(IOException ex){
        }

    }
 }

しかし、それは次のエラーを生成します。

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
    at check.Check.main(Check.java:33)

誰でも問題を解決するためのアイデアを持っていますか?

4

3 に答える 3

1

http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html#readObject()をご覧ください。メソッドには、いくつかの例外がリストされています。のサブクラスではないリストされたすべての例外について、例外RuntimeExceptionをキャッチするか、メソッドがその例外をスローできることを宣言する必要があります。あなたは に対してこれを行っただけですIOException。ドキュメントに記載されている他の例外についても、これを行う必要があります。これは、実行時以外の例外をスローするすべてのメソッドに対して行う必要があります。

于 2013-11-15T14:20:13.177 に答える
0

一部のクラスが欠落している場合やコンパイル エラーがある場合でも、IDE で一部のコードを実行できます。コンパイル エラーは、実行する前に修正してください。

于 2013-11-15T07:46:44.873 に答える
0

あなたのコードは現在コンパイルできません。36 行目は失敗します。

System.out.println("Variable, stored contains.." + stored.getType());

これは、クラス チェックにメソッドが含まれていないためgetType()です。多分あなたはの線に沿って何かを意味しましたgetClass().getName()か?

このエラーを修正して、再試行してください。あなた自身のエラーメッセージは私には意味がありません.IDEによって生成されていますか?

PS。クラス、変数などの命名に関するJavaコーディング規約をご覧ください。:)

于 2013-11-15T07:49:58.470 に答える