Как сгенерировать UID серийной версии файла Java из командной строки? - PullRequest
0 голосов
/ 21 января 2019

Фон

Я пытаюсь сгенерировать serialVersionUID моих java-файлов в eclipse, но получаю сообщение об ошибке, описанное в Eclipse: Невозможно сгенерировать идентификатор серийной версии .Я следовал инструкциям в этом вопросе, но у меня нет пропущенных файлов пути и все еще получаю ту же ошибку.Кроме того, я должен использовать случайно сгенерированный serialVersionUID (хотя обычно нормально использовать только 1L ), потому что это требование моего проекта.

Проблема

Поскольку мое затмение не работает, я пытаюсь найти решение из командной строки.Команда, которую я нашел, serialver , не генерирует serialVersionUID.Согласно Как генерировать SerialVersionUID serialver должен генерировать serialVersionUID в файле:

  1. команда serialver

JDK имеет команду сборки вназывается «serialver» для автоматической генерации serialVersionUID.В этом примере вы используете «serialver» для генерации serialVersionUID для класса Address.

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

Однако я выполнил эту команду на одном из моих классов в каталоге класса, и терминал вернул этоошибка:

Class Classname.java not found.

Эта ошибка выдается независимо от того, набрал ли я serialver Classname или serialver Classname.java в терминале.Я также запустил его в том же каталоге, что и файлы, и ошибка не исчезла.

Вопрос

Как использовать serialver в командной строке Linux для установки serialVersionUID файла Java?Если serialver не является командой, которую я должен использовать, то какая команда (или серия команд) является правильным методом?

Уточнение

Я хочу иметь сгенерированный и назначенный serialVerionUID в моемфайл из командной строки , поэтому программный подход Как программно генерировать serialVersionUID в Java? - это не то, что я ищу.Другими словами, я хочу, чтобы команда генерировала этот бит кода в верхней части моего файла:

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

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Возможно, вам потребуется указать -classpath для каталога, в котором содержатся ваши скомпилированные классы (например, bin). Чтобы сослаться на класс, вы должны использовать его полное имя, включая пакет - например, для класса arraylist

serialver -classpath bin java.util.ArrayList
0 голосов
/ 21 января 2019

Вам необходимо запустить serialver в каталоге, содержащем скомпилированный файл .class, и указать имя класса без расширения (Classname, а не Classname.java).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...