Skip to Main Content

Java Programming

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Java.io.NotSerialization exception error

927057Jul 7 2012 — edited Jul 9 2012
Hi,

I have an error in my code and I don't know why. The error is a java.io.NotSerializationException. The code is:
import java.io.*;
import java.util.Scanner;

public class Venta implements Serializable
{
	private static final long serialVersionUID = 1L;
	long idv;
	int importe;
	int unidades;
	float precio;
	Scanner s=new Scanner(System.in);
	Cliente clt=new Cliente();
	Almacenamiento alm=new Almacenamiento();
	
	
	Venta()
	{
		idv=0;
	}

	public void escritura_venta(Venta v) throws IOException 
	{
				
		
		FileOutputStream filopstream=new FileOutputStream("ventas.dat");
		ObjectOutputStream ops = new ObjectOutputStream(filopstream);
		try 
                   {
                    ops.writeObject(v);
                   }
               catch(IOException i)
                  {
                   System.err.println("Error al escribir en el fichero");
                   System.out.println(i);
                   i.printStackTrace();
                  }
              ops.close();
	}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.Serializable;
import java.util.Scanner;
import java.lang.String;

public class Cliente implements Serializable
{
	long idc;
	String nombre;
	String apellidos;
	String pago;
	int ntarjeta;
	Scanner s=new Scanner(System.in);
	
	Cliente()
	{
		idc=0;
	}

	public void crear_cliente()
	{
		InputStreamReader isr = new InputStreamReader(System.in);
                BufferedReader br = new BufferedReader (isr);

               try
              {
        	System.out.println("Crear cliente");
        	idc++;
        	System.out.println("Nombre");
        	nombre=br.readLine();
        	System.out.println("Apellidos");
        	apellidos=br.readLine();
        	
        	System.out.println("Forma de pago (efectivo o tarjeta)");
        	pago=br.readLine();
        	if (pago.toLowerCase().equals("tarjeta")) 
        	{	
        		System.out.println("Número de tarjeta");
        		s.nextInt();
        	}	
              }
        catch (Exception e)
        {
                System.out.println("Error al leer de teclado");
        	e.printStackTrace();
        	System.out.println(e);
        }

		System.out.println("Cliente creado correctamente");
		
	}
}
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Scanner;


public class Menu 
{

	
	Menu() 
	{

	}
	
       public void lectura_venta() throws IOException, ClassNotFoundException  
	{
		Venta v=new Venta();
		
		FileInputStream filipstream=new FileInputStream("ventas.dat");
                try (ObjectInputStream ips = new ObjectInputStream(filipstream))
               {
                  v=(Venta)ips.readObject();
               }
               catch (IOException i)
              {
                 System.err.println("Error al leer del fichero");
                 System.out.println(i);
              }
	}

	public static void main(String args[]) throws IOException, ClassNotFoundException
	{
		Menu mn=new Menu();
		
		Venta v=new Venta();
		
		
		int op=0;
		Scanner s=new Scanner(System.in);
		
		Almacenamiento a=new Almacenamiento();
		Cliente c=new Cliente();
		Musica m=new Musica();
		
		do
		  {
			System.out.println("Menú:");
			System.out.println("1. Crear Venta");
			System.out.println("2. Crear Música");
			System.out.println("3. Listar Ventas");
			System.out.println("4. Listar Música");
                        
                  }
            }
		while(op!=4);
	}
}
When I run this code I displayed the error:

Error al escribir en el fichero
java.io.NotSerializableException: java.util.Scanner
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at Venta.escritura_venta(Venta.java:29)
at Menu.main(Menu.java:88)

I tried to declare object v outside main but inside the class Menú, but I displayed a similar error. I serialized the class Cliente but I displayed the error above. If I don't serialize it, the same error is displayed, but instead java.util.Scanner is class Cliente.

Why I displayed this error?

Thanks.
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 6 2012
Added on Jul 7 2012
5 comments
3,617 views