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

标签 java linux serialversionuid

背景

我正在尝试在 Eclipse 中生成我的 Java 文件的 serialVersionUID,但出现了 Eclipse : Cannot generate a serial version ID 中描述的错误.我已按照该问题中的说明进行操作,但我没有丢失路径文件,但仍然出现相同的错误。此外,我必须使用随机生成的 serialVersionUID(即使它通常是 ok to use just 1L),因为这是我的项目的要求。

问题

由于我的 eclipse 不合作,我正在尝试命令行解决方案。我找到的命令,serialver , 不生成 serialVersionUID。根据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 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>;

最佳答案

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

serialver -classpath bin java.util.ArrayList

关于java - 如何从命令行生成 Java 文件的串行版本 UID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54293817/

相关文章:

c - putenv()/setenv() 如何在不移动整个用户堆栈的情况下工作?

java - SerialVersionUID 异常

java - 我在哪里更改 Eclipse 中的设置,以便它为可序列化类生成 serialVersionUID?

java - 让 Java 运行时忽略 serialVersionUIDs?

java - JVM 类加载器无法从扩展类路径加载自定义 jar

java - 一个正则表达式可以(有效地)统治所有这些?

java - 使用 Spring boot 的 Ehcache 在测试环境中不起作用

java - 我可以在简单的 java CRUD 操作中使用 Firebase 吗?

linux - dlopen/dlclose 与几个 so,在 dlopen 上被阻止

linux - 如何加载预编译内核中已存在的修改后的内核模块