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

How do I generate the serial version UID of a Java file from command line?

背景

我正在尝试在 eclipse 中生成我的 java 文件的 serialVersionUID,但收到 Eclipse : Cannot generate a serial version ID. I have followed the directions in that question, but I have no missing path files and still get the same error. In addition, I must use a randomly generated serialVersionUID (even though it is generally 中描述的错误,因为这是我的项目的要求。

问题

由于我的eclipse 不合作,我正在尝试命令行解决方案。我发现的命令 serialver, does not generate a serialVersionUID. According to How to generate SerialVersionUID serialver 应该在文件中生成一个 serialVersionUID:

  1. serialver command

JDK has a build in command called “serialver” to generate the serialVersionUID automatically. In this example, you use “serialver” to generate a serialVersionUID for Address class.

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

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

Class Classname.java not found.

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

问题

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

澄清

我想在我的文件 中从命令行 生成并分配 serialVerionUID,因此 How to generate serialVersionUID programmatically in Java? 的编程方法不是我想要的。换句话说,我希望命令在我的文件顶部生成这段代码:

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

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

您可能需要为包含编译的 classes 的目录指定 -classpath(例如 bin)。要引用 class,您必须使用其完全限定名称,包括包——例如对于数组列表 class

serialver -classpath bin java.util.ArrayList