如何从命令行生成Java文件的序列号UID?

时间:2019-01-21 16:12:12

标签: java linux serialversionuid

背景

我正在尝试在eclipse中生成我的Java文件的serialVersionUID,但遇到Eclipse : Cannot generate a serial version ID中描述的错误。我已经按照该问题中的指示进行操作,但是我没有缺少路径文件,但仍然遇到相同的错误。另外,我必须使用随机生成的serialVersionUID(尽管通常为ok to use just 1L),因为这是我的项目的要求。

问题

由于我的日食不合作,我正在尝试命令行解决方案。我发现的命令serialver不会生成serialVersionUID。根据{{​​3}},serverver应该在文件中生成一个serialVersionUID:

  
      
  1. serialver命令
  2.   
     

JDK具有一个称为“ serialver”的内置命令,用于生成   serialVersionUID自动。在此示例中,您使用“ serialver”   为地址类生成serialVersionUID。

 E:\workspace\target\classes>serialver Address Address:    static final
    long serialVersionUID = -687991492884005033L;

但是,我在类目录中的一个类上运行了此命令,终端返回了此错误:

Class Classname.java not found.

无论我在终端中输入serialver Classname还是serialver Classname.java都给出了此错误。我还在与文件相同的目录中运行它,并且错误仍然存​​在。

问题

如何在Linux命令行中使用serialver来设置Java文件的serialVersionUID?如果serialver不是我应该使用的命令,那么哪个命令(或一系列命令)是正确的方法?

澄清

我想从命令行在我的文件中生成并分配了serialVerionUID ,因此How to generate SerialVersionUID的编程方法不是我想要的。换句话说,我希望命令在文件顶部生成以下代码:

private static final long serialVersionUID = <some random long>;

2 个答案:

答案 0 :(得分:2)

您可能需要为包含已编译类的目录(例如-classpath)指定bin。要引用一个类,您必须使用其完全合格的名称,包括软件包-例如一个arraylist类

serialver -classpath bin java.util.ArrayList

答案 1 :(得分:0)

您需要在包含已编译的.class文件的目录中运行serialver,并指定不带扩展名的类名(Classname,而不是Classname.java)。