Eclipse 3.4(Ganymede)タイプとのパッケージ衝突
-
28-09-2019 - |
質問
例外を除いて終了するパッケージがあります
package a.b.c.exception;
コードベースはEclipse 3.3まで問題はありませんでしたが、Eclipse 3.4に移行したとき、このパッケージに関連するエラーが発生し始めました。
"The package a.b.c.exception collides with a type"
パッケージ名をAbcexceptionsにリファクタリングすると、問題はありません。これはEclipse 3.4のバグによるものですか、それともこの動作を是正するための設定がありますか?
解決 5
Eclipseの編集オプションの1つを変更しましたが、問題は消えました。 Workspaceプロパティの下:Javaコンパイラ - >エラー/警告 - >「警告」から「無視」に「未使用のインポート」を変更します。
他のヒント
それはあなたが名前というクラスがあるからです exception
(小文字の「e」) a.b.c
パッケージと名前のパッケージ a.b.c.exception
.
コードがある場合、それは名前の衝突を引き起こします a.b.c.exception.doSomething();
- それはあなたが静的を呼び出したいということを意味しますか doSomething()
の方法 a.b.c.exception
クラス?それとも、呼ばれるクラスがあることを意味しますか a.b.c.exception.doSomething
コンストラクターを呼び出しようとしていることは?
Java Naming Conventions -Packagesすべての小文字、大文字とラクダケースから始まるクラスに固執します。この問題はわかりません。
==========編集===========
これが唯一です 正当 理由このエラーが表示されるはずです...
それはあなたのプロジェクトに直接ある必要はありません、あなたのプロジェクトが依存する別のプロジェクトまたはライブラリにある可能性があります。これにより、ビルドパスまたはプロジェクトのどこでもクラスの発生が表示されます。Eclipseツールバーの懐中電灯の見た目ボタンを押します - >「Java検索」を選択します - >検索フィールドにabcexceptionを入力 - >「ケースセンシティブ」 - > Select 「検索」の「入力」を選択します - >すべてのオプションが「検索」に選択されていることを確認します。
クラスを生成するツールを使用していますか?彼らはあなたのプロジェクトのビルドディレクトリにそれらを配置できますか?エラーが表示されたら、プロジェクトのビルドディレクトリに移動してA/b/c/ディレクトリに移動すると、「例外」のクラスファイルが表示されますか?
もちろん、一般的に日食はバグを持っている可能性があります(Eclipse 3.4にバグレポートがあると思いますが、それがあればより多くの苦情を見つけることができるでしょう...)方法(Eclipse 3.4でプロジェクトを開くことはできますか?別のディレクトリにクリーンなEclipse 3.4をインストールできますか?エラーが表示されますか?) JDK以外に、新しいプロジェクトでAbcexceptionパッケージを作成し、プロジェクトのクラスを作成します import a.b.c.exception.*;
エラーが発生するかどうかを確認します。)。
私は、私が継承した巨大なコードベースで同様の問題に遭遇しました。衝突は、Javadocリンクの部分的に資格のあるクラス名によって引き起こされたことがわかりました。
言い換えするために、Eclipseは、ABCDLondonをコンパイルするときにABCDのパッケージ/タイプの衝突があると私に言っていました。 ABCDのコードでJava検索を行うと、EclipseがAbcparisでのJavadocのコメントが試合だと考えたことが明らかになりました。 Javadocコメントには{@ link d.newyork}が含まれていました。 ITを変更して{@link abcdnewyork}を読み取ると、コンピレーションエラーが解決されました。
また、NewYorkはJavadocのコメントにのみ登場したため、パリのクラスに輸入されていないことにも注意する必要があります。これにより、省略された形式で解決されず、コメントのリンクをクリックしても機能しませんでした。絶対的な参照にすることで、Javadocリンクが機能します。
私はこれが愚かに聞こえることを知っています、そしておそらく真実ではないかもしれませんが、私はこのまったく同じエラーメッセージを解決しました:
- エラーメッセージが原因で、パッケージ名の行全体を削除します。
- .javaファイルを保存します(これにより、「宣言されたパッケージ」「予想されるパッケージと一致しない」と記載されている同じ行で新しいエラーがトリガーされます)。
- 元のパッケージ名を同じ行に再入力します。
- .javaファイルを保存します。
なぜこれがうまくいったのかはわかりませんでしたが、そうでした。そして、日食はその場にかんしゃくを投げるのを止めました。
安全なタイピングと迅速なコーディング。
-Goodge
クラスFOOがある場合、com.my.fooなどのfooで終わるパッケージを持つことはできません。
また、Mavenスタイルを使用している場合、SRC/Main/Resourcesのようなものの下でプロジェクトにリソースがあります
リソースのフォルダーにはパッケージスタイルもあります。また、クラスの名前を含むフォルダーを持つこともできません。
推奨される規則に従ってジェンキンスプラグインを開発するとき、あなたは間違いなくこの問題に遭遇します。
Jenkins Conventionsに従い、パッケージXYのMyBuilderという名前のクラスでビルダーを作成する場合、XymyBuilderという名前のリソースフォルダーに.Jellyを配置することも想定されています。これにより、上記の問題が発生します。
ただし、リソースフォルダーXymyBuilder(MyBuilderの小文字の「M」に注意)すると、推奨されるコンベンションとは異なり、プラグインは意図したとおりに機能します。