相关疑难解决方法(0)

如何删除警告可序列化类ClASSNAME不声明long类型的静态最终serialVersionUID字段

我创建了一个扩展Exception类的类,我在Eclipse上得到了这个警告

可序列化类PhoneAlreadyExists不声明long类型的静态最终serialVersionUID字段

如何删除它?

public class PhoneAlreadyExists extends Exception {
    public PhoneAlreadyExists() {
        // TODO Auto-generated constructor stub
        super();
    }

    PhoneAlreadyExists(String message) {
        super(message);
    }

}
Run Code Online (Sandbox Code Playgroud)

java

17
推荐指数
3
解决办法
3万
查看次数

1L serialVersionUID是什么意思?我什么时候可以使用此默认值1L?

有三种方法可以定义serialVersionUID:

1. private static final long serialVersionUID = 1L; (Default)
2. private static final long serialVersionUID = -8940196742313994740L; (Generated)
3. Don't define serialVersionUID and let the JVM define it at runtime. @Lance Java
Run Code Online (Sandbox Code Playgroud)

但我不明白第一种方式!

我已经看过了,有人为源代码中的所有java类定义了"serialVersionUID = 1L".

什么意思?这有用吗?

如果所有类都具有相同的serialVersionUID 1L,那么没有问题吗?

java

17
推荐指数
6
解决办法
3万
查看次数

什么是串行版本ID?

重复什么是serialVersionUID,我为什么要使用它?

现在使用Eclipse进行一些java工作.我的班级名称用黄色下划线标出.我可以抑制警告或只添加frickin序列ID.

我不关心任何一种方式(或者我应该?),但这个序列号究竟是什么?

谢谢

java eclipse

15
推荐指数
1
解决办法
2万
查看次数

eclipse中的serialVersionUID字段警告

我刚刚开始使用AWT并在其中制作了一个简单的程序,它工作正常,但它在eclipse中显示了一条我不明白的警告信息:

可序列化类TestGUI不声明long类型的静态最终serialVersionUID字段

我知道警告消息与AWT无关,并且没有必要发布我的整个代码,但是当我试图制作代码的SSCCE时,警告也消失了.由于我不知道为什么会产生这个警告,所以我不知道在我的SSCCE中保留哪一部分.因此整个代码!

我的代码是:

import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class TestGUI extends Frame {
    /**
     * @param args
     */
    private int x = 50;
    private int y = 50;

    TestGUI(String s) {
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent we) {
                setVisible(false);
                System.exit(0);
            }
        });
        addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent me) {
                x = me.getX();
                y = me.getY();
                repaint();
            }
        });
    }

    public void paint(Graphics g) {
        g.drawString("Hello Princess", 100, 100);
        g.drawString("Mouse …
Run Code Online (Sandbox Code Playgroud)

java serialization awt serialversionuid

12
推荐指数
2
解决办法
1万
查看次数

Java Seralization和Deseralization

我有一个对象如下:

    public class Records implements java.io.Serializable{
        private int cId;
        private int pId;
        private int vlaue;
        private int tag;

        public Records(int c, int p, int v, int t){
                this.cId=c;
                this.pId=p;
                this.value=v;
                this.tag=t;
        }
}
Run Code Online (Sandbox Code Playgroud)

我已经收集了大量数据,构建了上述类中的对象并将它们分解为磁盘.

我忘记包含在类文件中的一个转储是访问每个对象的值的方法.例如,访问特定对象的cId值.

我修改了类定义以添加这样的方法,但后来我无法将对象反序列化回记录类并获得此运行时错误:

java.io.InvalidClassException: Records; local class incompatible: stream classdesc serialVersionUID = -1232612718276774474, local class serialVersionUID = -8244963718951538904
    at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:579)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1600)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1513)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1749)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
    at DeSerialise.main(DeSerialise.java:21)
Run Code Online (Sandbox Code Playgroud)

我想我需要告诉java他们是相同的定义并修改serialVersionUID但不太确定如何?任何想法都会受到欢迎!

java serialization object-serialization deserialization

8
推荐指数
1
解决办法
1085
查看次数

即时运行不起作用

前提

由于我使用android studio 2.0(发行版),因此在编译我的应用程序时会得到许多内部类错误(这些似乎不相关,因为应用程序仍能正常工作).当我禁用即时运行时,我的应用程序工作正常,如果我启用它,应用程序崩溃

意见

编译时的错误如下:

Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
Error:(com.samsung.android.sdk.pass.e) that doesn't come with an
Error:associated EnclosingMethod attribute. This class was probably produced by a
Error:compiler that did not target the modern .class file format. The recommended
Error:solution is to recompile the class from source, using an up-to-date compiler
Error:and without specifying any "-target" type options. The consequence of ignoring
Error:this warning is that reflective operations on this class will incorrectly
Error:indicate that it …
Run Code Online (Sandbox Code Playgroud)

android instant-run

7
推荐指数
1
解决办法
1924
查看次数

序列化:java.io.StreamCorruptedException:无效的流标题:0AACED00

我是一名学习我的文件IO技能的学生,我遇到了使用ObjectInputStream从文件中读取对象的问题.代码一直抛出一个InvalidClassException,我无法找到代码是如何在线投掷或通过反复试验.这是我的代码:

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class ReadFromFile {
String filename;
List<Object> os;

public ReadFromFile(String filename) {
    this.filename = filename;
    os = new ArrayList<>();
}

public Object[] readObject() {
    try {
        FileInputStream fis = new FileInputStream(filename);
        ObjectInputStream ois = new ObjectInputStream(fis);
        System.out.print("reading\n");
        while (true) {
            os.add(ois.readObject());
            System.out.print("read one\n");
        }
    } catch (EOFException e) {
        return os.toArray();
    } catch (FileNotFoundException e) {
        System.out.print("File not found\n");
        return os.toArray();
    } catch (ClassNotFoundException e) {
        System.out.print("Class not found\n");
        return os.toArray();
    } catch …
Run Code Online (Sandbox Code Playgroud)

java serialization java-io

6
推荐指数
1
解决办法
5993
查看次数

在文件中保存对象会产生错误:"FileOutputStream无法解析为类型"

我正在尝试保存一个对象,我用Google搜索了HowTo并得到了关于这个问题的教程.然而,由于我以前从未使用过这个问题,我遇到了无法解决的问题.

所以我有一个庞大的类Course(包含所有类型的东西,变量,收集器......),我试图将其保存在文件中.

import java.io.Serializable;
class Person implements Serializable {
... }
Run Code Online (Sandbox Code Playgroud)

现在,我将一个对象发送到类Save.java并尝试保存它:

class Save {

    protected void saveCourse (Course course) {

        FileOutputStream courseFile = new FileOutputStream("course.data");

        ObjectOutputStream courseObj = new ObjectOutputStream(courseFile);

        courseObj.writeObject(course);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,FileOutputStream和ObjectOutputStream"无法解析为类型".不是他们认为是预定义的.我怎样才能解决这个问题

我可以在这里找到我得到的教程.

java serialization file object

5
推荐指数
1
解决办法
1万
查看次数

什么是UID用于的串行版本?

我正在创建一个Java应用程序,当创建一个与ADT一起使用的接口时,它会发现需要将随机数初始化为ID号.

public class StackFullException extends RuntimeException {
    private static final long serialVersionUID = 1L;
    public StackFullException(){}
    public StackFullException(String message) {
        super(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

我很好奇是否将其删除将影响我的程序的任何后果,如果是这样,如何避免它.

java stack exception uid

5
推荐指数
1
解决办法
2212
查看次数

如果扩展一个实现Serializable"下线"的类,为什么还需要重新定义serialVersionUID?

对于我的一个项目,我需要定义一个扩展的新异常ProviderMismatchException.

从javadoc链接中,您可以看到此异常:

  • 延伸IllegalArgumentException,哪个
  • 延伸RuntimeException,哪个
  • 延伸Exception,哪个
  • 延伸Throwable.

所有这些都定义了自己的,static final serialVersionUID除了Throwable添加private修饰符.

现在,如果你实现了一个接口Foo,那么所有继承的classse也会实现该接口,这也代表Serializable着它; 但是,为什么JDK中的子类为每个子类重新定义它?没有为继承的类再次定义它的危险是什么?

java inheritance serialization

5
推荐指数
1
解决办法
1287
查看次数