宣言されたパッケージが予期されたパッケージ「」と一致しません


89

私はEclipseを使用していますが、しばらくの間Javaを使用していません。ただし、コマンドラインでコードを問題なくコンパイルして、必要な.classファイルを生成することはできます。Eclipseでは、それは不平を言いThe declared package "Devices" does not match the expected package ""ます。これはどういう意味ですか?どうすれば修正できますか?

サンプルコード:

package Devices;

public final class DevFrequency 
{
    public short messageID;
    public double frequency;
    public short converterID;
    public DevFrequency() 
    {
    }
    public DevFrequency(short _messageID,double _frequency,short _converterID)
    {
        messageID = _messageID;
        frequency = _frequency;
        converterID = _converterID;
    }
}

私のプロジェクトの名前はDeviceDDSです。


2
このクラスは/src/Convertersディレクトリにありますか?
ジェレミー

6
質問を遡及的に変更する場合(正直言って無意味に思えます)、一貫性を保つ必要があります。質問の最初の段落は編集していません。また、すべてのコメントが奇妙に見えるようにしました。なぜ、ほぼ1年半後にすべてを変更するのですか?
Jon Skeet 2013年

回答:


52

Eclipseは、宣言されたパッケージがディレクトリ階層と一致することを想定しています。したがって、Javaファイルがソースルートの下の「Devices」というディレクトリにあることを想定しています。現時点では、ファイルはソースルートに直接あるようです。したがって、適切なディレクトリを作成し、そこにファイルを移動します。

従来、パッケージは小文字であり、DNSの逆順で組織名が含まれていることに注意してください。

com.foo.devices;

3
@Sakti:私の知る限りではできません。できたとしても、そうしないことを強くお勧めします。すべての経験豊富なJava開発者は、通常の規則に従うことを期待します。
ジョンスキート2012

88

ファイルを閉じてから再度開いてみてください。

ファイルの場所やパッケージの宣言にまったく問題がない場合、Eclipseでこのエラーが発生する可能性があります。これらの他のソリューションを試す前に、それを試してください。時々日食は混乱するだけです。それは私のために何度も働いた。私はそのアイデアJoshuaGoldbergの功績によるものです。


2
VSCode内のGradleプロジェクトでこの問題が発生しました。再度開くと修正されました。
TastyWheat

1
日食エディタでファイルを開いたり閉じたりすると、問題の解決に役立ちました。java config build-sourceタブにソースフォルダーを追加しましたが、エラーは削除されませんでしたが、Eclipseでエディターを閉じて開いたときに役立ちました。:-)
JassJava

eclipseを終了して再起動すると、問題も修正されました。
ドン・スミス

彼は..私はそれを修正しようとして1時間費やし、それからこれを見ました。
Vikash

44

解決策1: Eclipse CVSからチェックアウトしたプロジェクトで、このエラー「宣言されたパッケージが期待されるパッケージと一致しません」が発生したときに機能した1つの解決策:

ナビゲーションバーでプロジェクトを右クリックし、「削除」をクリックし1.Right
を2.Make必ず「ディスクの削除、プロジェクトの内容をオプションは」NOT確認し、[OK]をクリックします。
3.プロジェクトが削除されたら、[ファイル]-> [インポート]-> [一般]-> [既存のプロジェクトをワークスペースに]に
移動します。4。ディレクトリリストからワークスペースを選択し、プロジェクト名の横にあるチェックボックスをオンにします。「終了」を クリックします

解決策2:もう一度、次のメッセージでこのエラーが発生しました

Eclipseビルドエラー-java.lang.Objectを解決できません ここで言及されている別のルートに従う必要があり、エラーはなくなりました。

当面の間、回避策は、プロジェクトからJREシステムライブラリを削除してから、再度追加することです。手順は次のとおりです。

  1. ビルドエラーのあるプロジェクトのプロパティに移動します(右クリック> [プロパティ])[ビルドパス]セクションの[ライブラリ]タブを表示しますリストで[JREシステムライブラリ]を見つけます(これがない場合、このエラーメッセージは日食のバグですが、プロジェクトが正しく構成されていません)
  2. 「JREシステムライブラリ」を削除します
  3. 「ライブラリの追加...」をクリックし、「JREシステムライブラリ」を選択して、プロジェクトに適切なJREを追加します(例:「ワークスペースのデフォルトJRE」)
  4. ライブラリの選択で[完了]をクリックし、プロジェクトのプロパティで[OK]をクリックして、プロジェクトの再構築を待ちます

うまくいけば、エラーは解決されます...


私もこれをしなければなりませんでした(ビルドにgroovyテストのディレクトリを追加します)。再作成する必要がある実行構成をメモすることを忘れないでください。なぜこれが必要なのか考えはありますか?このような痛み。
Joshua Goldberg

11
より簡単な解決策:私は再びこの状況になり、プロジェクトを閉じ、Eclipseを再起動し、プロジェクトを再度開くことで、プロジェクトを機能させることができました。
Joshua Goldberg

12
さらに簡単!私はちょうどそれを再び持っていました、そしてそれは単一の問題のあるファイルのエディタを閉じてそして再び開くことによって消えました。
Joshua Goldberg

4
Eclipseを再起動すると修正されるようです。
マイクR

解決策1は私のために働いた。とても奇妙です。同じgitクローンを他のマシンのEclipseにインポートしましたが、この問題は発生していません。
dnuttle 2014

13

次の手順に従って問題を解決しました。

  1. プロジェクトを選択します-右クリック-Javaビルドパス。

  2. [ソース]タブで、srcをに変更しsrc/main/javaます。

  3. Eclipseはすべてのプロジェクトを並べ替えます。


11

この問題が発生しました。パッケージ内の他のクラスは問題ありませんでしたが、1つのクラスでエラーが発生しました。パッケージ宣言に問題はありませんでした。

refactor->moveクラスを一時的に別のパッケージに移動しrefactor->moveてから、元のパッケージに戻すことで修正しました。



2

プロジェクトの下に「デバイス」という新しいパッケージを作成し、その中にクラスを配置します。これは、プロジェクトのソースフォルダの「Devices」というディレクトリにクラスが配置されているのと同じです。


1

Devicesプロジェクトのプロパティでソースフォルダとして定義されていることを確認してください。


1

同じ種類のエラーが発生しましたが、私のパッケージは完全に正しかったです。エディターを閉じて開いたところ、エラーは消えました。これがいくつかのシナリオで役立つことを願っています。


1

.classpathファイル内のそのパッケージの「除外」属性を削除することで、これを修正しました。タグ全体ではなく属性を削除しないと、「src / java」がソースフォルダでなくなります。

<classpathentry excluding="com/myproject/mypackage/mysubpackage/" kind="src" path="src/java"/>

1

この問題は、パッケージ名を記載することで解決されました

パッケージstepDefinitionの下にあるファイルTest_Steps.javaを移動しました

ここに画像の説明を入力してください

パッケージstepDefinitionを追加するだけで、問題は解決しました

したがって、この問題は、パッケージがあり、クラスファイルで使用していない場合に発生する可能性があります。

追加すると問題が解決し、エラーは表示されなくなりました。

ここに画像の説明を入力してください


0

正しいパッケージを作成したことを確認してください。パッケージの代わりにフォルダを作成する機会が得られる場合があります。


0
  1. プロジェクトのワークスペースルートディレクトリにディレクトリ[your.project.name]を作成します。

  2. * .javaを「src」からそのディレクトリにコピーします。

  3. プロジェクトを閉じて再度開きます。


0

これは、Eclipseのsvnリポジトリからプロジェクトをチェックアウトしているときに起こりました。.m2フォルダーにeclipseが見ていなかったjarファイルがありました。私がした問題を修正するには:

プロジェクトフォルダーを右クリック[構成]> [Mavenプロジェクトに変換]

そしてそれは問題を解決しました。


0

答えは100万ありますが、もう1つあります。ファイルを新しいパッケージにコピーし、古いパッケージを削除して、新しいパッケージの名前を古いパッケージの名前に変更します。


0

デフォルトのパッケージを使用していないことを確認してください。'devices'という名前の新しいパッケージを作成し、その中にこのコードをコピーして使用します。


0

他のパッケージ/プロジェクトからクラスをコピーしたときに、このような状況が発生しました。

通常、メニュー->プロジェクト->クリーンが役立ちます。


0

私の場合、Javaのファイルmainメソッドが正しく実行されていたため、[問題]タブでエラーマーカーを選択して削除しました。これは、EclipseNeonにインストールされている多数のプラグインの不具合です。


0

既存のプロジェクトをEclipseにインポートしたときにも、この問題に直面しました。これはgradleプロジェクトでしたが、インポート中に、[一般]-> [既存のプロジェクト]をクリックして、通常のプロジェクトとしてワークスペースにインポートしました。この問題を解決するために、プロジェクトにGradleネイチャーを追加しました::::プロジェクトフォルダーを右クリック->構成-> Gradleネイチャーを追加


0

Spring Tool Suite4を使用していました。問題を特定できませんでした。ディレクトリ構造はパッケージ名に従った。

しかし、プロジェクトを掃除することは私を助けました。


0

EclipseIDEのMavenプロジェクトでも同じ問題が発生しました。.classpathファイルを正しい形式に置き換えることで解決できました。交換後、プロジェクトを閉じて開きます。

サンプルの.classpathファイル

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/webapp">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="test" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="output" path="target/classes"/>
</classpath>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.