Eclipse:宣言されたパッケージが期待されるパッケージと一致しません


86

外部プロジェクトのインポートに問題があります。[ファイル]-> [インポート...]-> [既存のプロジェクトをワークスペースに]に移動し、プロジェクトが配置されているフォルダーを選択して、すべてをインポートします-しかし、プロジェクトのパッケージ名はEclipseが期待するものではないようです。パッケージ名にはすべてプレフィックスが付いています。

prefix.packagename1
prefix.packagename2

しかし、Eclipseは

src.prefix1.prefix.packagename1
src.prefix1.prefix.packagename2

など。ディレクトリがsrc / prefix1 / prefix / package1であるため

私は本当に外部コードをいじりたくありません。ディレクトリ「src / prefix1」を無視するようにEclipseに指示するにはどうすればよいですか?または他に何ができますか?


package (name of package under which the file to be ) ファイルの冒頭に追加しました
Sai Ram

回答:


105

ビルドパスに移動し、ソースパスをのではsrc/prefix1なくに変更するだけですsrc

srcディレクトリを右クリックして[ビルドパス/ビルドパスから削除]を選択し、ディレクトリを見つけてsrc/prefix1右クリックして[ビルドパス/ソースフォルダとして使用]を選択するのが最も簡単な場合があります。


2
どうすればそれを元に戻すことができますか?「ビルドパス/ソースフォルダとして使用」をクリックしましたが、何も機能しなくなりました。編集:私の質問への答えは、「
ビルドパスの

25
Jonの提案は機能しますが、日食の再開が必要になる場合があることに注意してください。
Samik R 2013

1
!! ソースフォルダを変更してもエラーが表示される場合は、プロジェクトをビルドしてください。日食は時々私に何かを壊したくなります。
MattC 2013年

4
Close / Openprjは私のために働きました... Eclipseは大きなツールであり、時々物事を忘れることがあります
niken 2014年

おかげで仲間、素晴らしい解決策。
ランコーン2014年

70

この問題に遭遇したばかりですが、Skeet氏の解決策がうまくいかなかったので、この問題をどのように解決したかを説明します。

ソースディレクトリを宣言する前に、「src」の下にあるJavaファイルを開いたことがわかりました。

Eclipseの「src」ディレクトリを右クリックした後、「ビルドパス」を選択し、「ソースフォルダとして使用」を選択します

すでに開いているJavaファイルを閉じて再度開きます(F5で更新しても機能しませんでした)。

「prefix1」以降のJavaファイルへのパスを指定すると、ファイル内のパッケージと一致します(リクエスターの質問prefix1.prefix.packagename2の例)。これはうまくいくはずです

Eclipseは「src」について文句を言うことはもうありません。


1
これでした。とてもシンプルですが、しばらく立ち往生しました。ありがとう!
クリスチャンビエルマ2015年

ビルドパスを設定した後、ファイルを閉じて再度開く必要がありました。ありがとう!
ed- 2015

はい!私のためにも働いた。
ロバートケーシー

11

問題のある* .javaファイルを他のフォルダーに移動します。

「src」項目をクリックして「F5」を押します。

赤十字は消えます。

* .javaファイルを「パッケージパス」に戻し、「src」項目をクリックして「F5」を押します。

すべて大丈夫なはずです。


2

既存のプロジェクトをインポートした場合は、ソースフォルダーを削除してから、それらを再度ビルドパスに追加し、Eclipseを再起動します。ほとんどの場合、日食は再起動するまでエラーを表示し続けます。


1

失敗したビルドがIDEの外部で実行された後、私は起こります。ワークスペースのクリーニングが機能しない場合は、次のことを試してください。1)すべてのプロジェクトを削除する2)STS / eclipseを閉じて再起動する、3)プロジェクトを再インポートする


1

私のために働いた唯一のことは、プロジェクトを削除してから、それを再度インポートすることです。魅力のように機能します:)


0

.classpathファイルを持たないAndroidプロジェクトをインポートすると、Eclipseでこの問題が発生することがあります。Eclipseが作成するものは、Androidが期待するものとまったく同じではありません。ただし、Androidの.classpathファイルは通常すべて相対的であるため、別のプロジェクトから正しい.classpathファイルを誤った.classpathにコピーするだけです。これを行う方法を示すビデオを作成しました:https//www.youtube.com/watch?v = IVIhgeahS1Ynto


0

プロジェクトにpackage name1.name2.name3.name4 (宣言されたパッケージ)のようなパッケージがあるとします。

パッケージエクスプローラーに、
name1.name2という名前のパッケージトップレベル、name3.name4という名前の
サブパッケージが表示されます。

Eclipseは、インポート元の時点からディスク上のファイルディレクトリ構造からパッケージ名を抽出するため、エラーが発生します。

ワークスペース外のフォルダへのシンボリックリンクを使用していたためか、私の場合はもう少し複雑でした。

私は最初にBuildPath.Java Build Path.Source Tab.Link Source Buttonを試しました。パッケージ内のname1の前のフォルダーを参照します。Folder-nameは好きなように(私は思います)。しかし、問題がありました。

次に、ビルドパスからフォルダーを削除し、[ファイル]> [インポート...]> [一般]> [ファイルシステム]> [次へ]> [ディレクトリから]> [参照...]をクリックして名前の上のフォルダーに移動> [詳細設定]ボタンをクリック> [ワークスペースにリンクを作成]をオンにして[完了]をクリックボタン。


本当。私の場合、プロジェクト名には接尾辞-2.0.0-SNAPSHOTが追加されています。そのプレフィックスを削除し(プロジェクトの名前を変更..)、すべてが機能しました。
JRun 2015年

0

プロジェクトのsrcフォルダーに移動し、そこからすべてのコードを一時的な場所にコピーして、プロジェクトをビルドします。そして、実際のコードを一時的な場所からプロジェクトsrcにコピーします。そして、ビルドを再度実行します。問題は解決されます。

注:これはEclipseに固有です。


0

私はたまたま同じ問題を抱えていました。ただし、最初のいくつかの回答は私には機能しません。解決策を提案します。.classpathファイルを変更します。たとえば、classpathentryノードのパスを次のように定義できます:path = "src / prefix1 / java"またはpath = " src / prefix1 / resources」。それが役立つことを願っています。


0

私にとっての問題は、既存のプロジェクトをMavenに変換し、ドキュメントに従ってフォルダー構造を作成し、パッケージの一部として「main」フォルダーを表示していたことでした。Jon Skeet / JWoodchuckと同様の手順に従って、Javaビルドパスに移動し、壊れたビルドパスをすべて削除してから、ビルドパスを「src / main / java」および「src / test / java」に追加しました。それぞれのリソースフォルダとして、問題を解決しました。


0

ビルドパスには、パッケージ名のパスの「前まで」のパスが含まれている必要があります。

たとえば、フォルダ構造が次のsrc/main/java/com/example/dao 場合:importステートメントを含むクラスが'package com.example.dao'誤ったパッケージエラーinclude:src/main/java を要求する場合、ビルドパスは問題を解決するはずです。


-1
  1. パッケージを持っている外部フォルダを右クリックします
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. [ビルドパス]-> [ビルドパスから削除]をクリックします。

  2. 次に、プロジェクトのフォルダーセクションにあるフォルダーprefix1に移動します。

  3. それを右クリック->ビルドパス->ソースフォルダとして使用。

  4. 完了。パッケージフォルダにはエラーが表示されなくなりました。それでも表示される場合は、プロジェクトを再起動してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.