プロが教える店舗&オフィスのセキュリティ対策術

同じパッケージ名で同じクラス名が複数存在した場合
うまく動かなくなるかと思いますが、それを検出する
方法はあるのでしょうか?

考えられる方法は
・貼られてるクラスパスを追っていき重複を探す。
・貼られてるクラスパスのjarファイルを解凍して重複を探す。

正直この方法だと辛すぎるので
何かいい方法がありましたらよろしくお願いします。

A 回答 (1件)

もう衝突はしてしまったのでしょうか?



クラス名と言うより、パッケージ名の衝突だと思うのですが…。
クラスパスで複数のパスをルートにしている場合や、
複数のjarファイルを指定している場合に起こり得ます。
その際は、衝突しているパッケージ名を探すしかないように思います。
この場合、複数の箇所に、同じ名前のパッケージを置いている事の方が問題があります。

そうならないために、パッケージの命名に、
インターネットアドレスを流用する方法が推奨されています。
たとえば「教えてgoo」氏がクラスを書くとしたら、
package jp.ne.goo.oshiete;
というパッケージの下に置くようにします。

パッケージ名が衝突しなければ、クラス名が衝突するという事態は、まず起こらないと思います。
まあ、同じ.javaファイルに複数のクラスを記述した場合はあり得ますが、
普通はそういうことはしません。
したとしても、できる.classファイルは(局所的なパッケージには)一つだけです。
また、publicにできるクラスは一つの.javaファイルについて高々一つです。

答えにはなっていないかもしれません。失礼しました。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

まず、補足ですが、もう衝突しちゃいました(笑)
ただ、今回はなんとか解決することができました。
その解決過程があまりに重労働だったので今後のために
何かいい方法がないか伺った次第です。

やはり衝突がおきないように工夫するのが正しいですかね。

もうしばらく、のんびりと他の方の回答を待ってみたいと思います。
ありがとうございました。

お礼日時:2003/04/12 16:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!