技術とか戦略とか

証券レガシーシステムを8年いじってから転職した普通の文系SEによるブログ。技術のみではなく趣味の戦略考察についても。

java:保守開発で変数名が無いよと言われた場合の対応

保守開発で既に本番運用に乗っているクラスを改修する際、当該クラスのjavaソースをEclipseNetBeans等のIDEに取り込んだ時点で「hogeVariable を変数に解決できません」「hogeVariable は解決できないか、フィールドではありません」といった形で怒られることがあります。
定義されていない変数を使おうとするとこれらのエラーが出るのですが、本番運用に乗っている時点で定義されていないわけがないので、どこかのクラスで定義されています。そのクラスを取りこんで、コンパイルを通す必要があります。
 
「if (hogeVariable == 0){」のような形で変数名が単独で出てくる場合は、改修しようとしているクラスのスーパークラスか import static で取り込んでいるクラスかのどちらかで変数が定義されています。
それらのクラスを探して、変数名が定義されていればそのクラスを取り込めば良いです。
 
「if (hogeClass.hogeVariable == 0){」のような形で別のクラスの変数名として出てくる場合は、その hogeClass のスーパークラスで変数が定義されているので、それを取り込めば良いです。
(未確認ですが、hogeClass で import static で取り込んでいるクラスにある可能性もあるかもしれません)
 
言われてみれば当たり前のことなのですが、javaに慣れていないと普通のimportで取り込んでいるクラスを探したり色々なソースにgrepをかけたりしてハマることがあるので、あえて記事にしました。