背景
我正在尝试在 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:
- 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/