Warning message when compiling example program - newbie question

S

Soundar

Hi,
When i try to run the following swing example program using Eclipse
3.2, the program runs and shows a (tiny) window, but I get a warning
message in the class declaration:


import javax.swing.*;
public class IconFrame extends JFrame {
/ * warning message in the line above that says
The serializable class IconFrame does not declare a static final
serialVersionUID field of type long */

JButton load, save,subscribe,unsubscribe;

public IconFrame () {
super("Icon Frame");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
IconFrame ike = new IconFrame();
}
}

Could someone please help me? Thanks.
 
J

JavaJava

Hi, below is a portion of the JDK's documentation. To fix this, click
on the class name in the editor, and press CTRL-1. It's will
automatically add the serialVersionUID.

Josh

The serialization runtime associates with each serializable class a
version number, called a serialVersionUID, which is used during
deserialization to verify that the sender and receiver of a serialized
object have loaded classes for that object that are compatible with
respect to serialization. If the receiver has loaded a class for the
object that has a different serialVersionUID than that of the
corresponding sender's class, then deserialization will result in an
InvalidClassException. A serializable class can declare its own
serialVersionUID explicitly by declaring a field named
"serialVersionUID" that must be static, final, and of type long:

ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;


If a serializable class does not explicitly declare a serialVersionUID,
then the serialization runtime will calculate a default
serialVersionUID value for that class based on various aspects of the
class, as described in the Java(TM) Object Serialization Specification.
However, it is strongly recommended that all serializable classes
explicitly declare serialVersionUID values, since the default
serialVersionUID computation is highly sensitive to class details that
may vary depending on compiler implementations, and can thus result in
unexpected InvalidClassExceptions during deserialization. Therefore, to
guarantee a consistent serialVersionUID value across different java
compiler implementations, a serializable class must declare an explicit
serialVersionUID value. It is also strongly advised that explicit
serialVersionUID declarations use the private modifier where possible,
since such declarations apply only to the immediately declaring
class--serialVersionUID fields are not useful as inherited members.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top