如何从命令行生成 Java 文件的串行版本 UID?

isa*_*bob 3 java linux serialversionuid

背景

我试图在Eclipse 中生成我的 java 文件的 serialVersionUID,但得到Eclipse 中描述的错误:无法生成串行版本 ID。我已按照该问题中的说明进行操作,但我没有丢失路径文件,但仍然出现相同的错误。此外,我必须使用随机生成的 serialVersionUID(尽管通常只使用 1L 是可以的),因为这是我的项目的要求。

问题

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

  1. 串行命令

JDK 有一个名为“serialver”的内置命令来自动生成 serialVersionUID。在此示例中,您使用“serialver”为 Address 类生成一个 serialVersionUID。

 E:\workspace\target\classes>serialver Address Address:    static final
    long serialVersionUID = -687991492884005033L;
Run Code Online (Sandbox Code Playgroud)

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

Class Classname.java not found.
Run Code Online (Sandbox Code Playgroud)

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

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

澄清

我想从命令行在我的文件中生成并分配一个 serialVerionUID ,因此如何在 Java 中以编程方式生成 serialVersionUID的编程方法不是我要找的。换句话说,我希望命令在我的文件顶部生成这段代码:

private static final long serialVersionUID = <some random long>;
Run Code Online (Sandbox Code Playgroud)

Cod*_*ino 5

您可能需要指定-classpath包含已编译类的目录(例如bin)。要引用一个类,您必须使用它的完全限定名称,包括包——例如,对于一个 arraylist 类

serialver -classpath bin java.util.ArrayList
Run Code Online (Sandbox Code Playgroud)