コマンドラインからJavaファイルのシリアルバージョンUIDを生成するにはどうすればよいですか?

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


質問 written by isakbob @2019-01-21 16:27:26Z

: 0 : 2 : 203

バックグラウンド

私はJavaファイルのserialVersionUIDをeclipseで生成しようとしていますが、 Eclipseで説明されているエラーが発生します:シリアルバージョンIDを生成できません 私はその質問の指示に従いましたが、欠落しているパスファイルはなく、同じエラーが表示されます。 さらに、プロジェクトの要件であるため、ランダムに生成されたserialVersionUIDを使用する必要があります(通常は1Lだけを使用しても構いませんが )。

問題

私の日食は非協力的であるため、コマンドラインソリューションを試しています。 私が見つけたコマンドserialverは、serialVersionUIDを生成しません。 SerialVersionUIDの生成方法に従って、 serialverはファイル内にserialVersionUIDを生成する必要があります。

  1. serialverコマンド

JDKには、serialVersionUIDを自動的に生成する「serialver」というビルドインコマンドがあります。 この例では、「serialver」を使用してAddressクラスのserialVersionUIDを生成します。

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

ただし、クラスのディレクトリ内のクラスの1つでこのコマンドを実行すると、ターミナルは次のエラーを返しました。

Class Classname.java not found.

このエラーは、 serialver Classnameまたはserialver Classname.javaを端末に入力したかどうかに関係なく発生しました。 また、ファイルと同じディレクトリで実行しましたが、エラーが続きました。

質問

Linuxコマンドラインでserialverを使用して、JavaファイルのserialVersionUIDを設定するにはどうすればよいですか? serialverが私が使用すべきコマンドではない場合、どのコマンド(または一連のコマンド)が適切な方法ですか?

明確化

コマンドラインからファイルに生成され割り当てられたserialVerionUIDを持ちたいので、 JavaでプログラムでserialVersionUIDを生成する方法のプログラム的アプローチは 私が探しているものではありません。 言い換えれば、ファイルの先頭に次のコードを生成するコマンドが必要です。

private static final long serialVersionUID = <some random long>;
回答 1 written by Coderino Javarino @2019-01-21 16:37:04Z
3

コンパイル済みクラスを含むディレクトリ(たとえば、 bin )に-classpathを指定する必要がある場合があります。 クラスを参照するには、パッケージを含む完全修飾名を使用する必要があります。たとえば、arraylistクラスの場合

serialver -classpath bin java.util.ArrayList
回答 2 written by @2019-01-21 16:25:10Z
0

コンパイルされた.classファイルを含むディレクトリでserialverを実行し、拡張子なしのクラス名(Classname.javaではなくClassname)を指定する必要があります。