簡體   English   中英

聲明的包與預期的包“”不匹配

[英]The declared package does not match the expected package “”

我正在使用 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

嘗試關閉並重新打開文件。

當文件位置或包聲明絕對沒有問題時,可能會在 eclipse 中出現此錯誤。 在花費大量時間嘗試這些其他解決方案之前先嘗試一下。 有時 eclipse 會感到困惑。 它在很多場合都對我有用。 把這個想法歸功於Joshua Goldberg

Eclipse 期望聲明的包與目錄層次結構相匹配 - 因此它期望您的 Java 文件位於源根目錄下名為“Devices”的目錄中。 目前看起來該文件直接位於您的源根目錄中。 所以創建適當的目錄,並將文件移動到那里。

請注意,通常,包是小寫的,並以反向 DNS 順序包含您的組織名稱,例如

com.foo.devices;

解決方案 1:當我從 eclipse CVS 簽出的項目發生此錯誤“聲明的包與預期的包不匹配”時,一種對我有用的解決方案:

1.在導航欄中右鍵單擊項目,然后單擊“刪除”
2.確保“刪除項目內容的磁盤”選項未被選中,然后單擊確定。
3.現在刪除項目后,轉到文件 -> 導入 -> 常規 -> 現有項目到工作區
4. 從目錄列表中選擇您的工作區並選中您的項目名稱旁邊的框。 單擊“完成

解決方案 2:我再次收到此錯誤並顯示以下消息

Eclipse 構建錯誤 - java.lang.Object 無法解決我不得不遵循這里提到的另一條路線,錯誤消失了。

同時,解決方法是從項目中刪除 JRE 系統庫,然后重新添加它。 以下是步驟:

  1. 轉到帶有構建錯誤的項目屬性(右鍵單擊 > 屬性)查看“構建路徑”部分中的“庫”選項卡在列表中找到“JRE 系統庫”(如果缺少此錯誤消息,則此錯誤消息不是eclipse 錯誤,但一個配置錯誤的項目)
  2. 刪除“JRE 系統庫”
  3. 點擊“添加庫...”,選擇“JRE 系統庫”並為項目添加適當的 JRE(例如“工作區默認 JRE”)
  4. 在庫選擇中點擊“完成”,在項目屬性中點擊“確定”,然后等待項目的重新構建

希望錯誤能得到解決......

我按照以下步驟解決了這個問題:

  1. 選擇項目-右鍵-java構建路徑。

  2. 在源選項卡中 - 您將src更改為src/main/java

  3. Eclipse 將重新排序所有項目。

我遇到了這個問題 - 我的包中的其他類很好,但有一個類有錯誤。 包聲明沒有任何問題。

我通過執行refactor->move修復它並將類臨時移動到另一個包,然后refactor->move回原始包。

我修復它只是將名稱更改為小寫,現在 Eclipse 可以識別該包。

在您的項目下創建一個名為“設備”的新包,並將您的類放入其中。 這相當於將類放置在項目源文件夾中名為“Devices”的目錄中。

您需要將類放在文件夾Devices

確保在項目屬性中將Devices定義為源文件夾。

遇到了同樣的錯誤,但我的包裹絕對正確。 當我剛剛關閉並打開我的編輯器時,錯誤消失了。 希望這可能會在某些情況下有所幫助。

我通過在我的.classpath文件中刪除該包的“排除”屬性來解決這個問題。 刪除屬性,而不是整個標簽,否則“src/java”將不再是源文件夾。

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

通過提及名稱解決了這個問題

我移動了位於 stepDefinition包下的文件Test_Steps.java

在此處輸入圖片說明

只需添加包 stepDefinition問題就解決了

所以當你有一個包並且你沒有在你的類文件中使用時,就會出現這個問題。

添加它已解決問題,錯誤不再出現。

在此處輸入圖片說明

確保您創建了正確的包。您可能有機會創建文件夾而不是包

  1. 在項目的工作區根目錄中創建目錄 [your.project.name]。

  2. 將 *.java 從“src”復制到該目錄。

  3. 關閉並重新打開項目。

當我從 eclipse 中的 svn 存儲庫簽出一個項目時,這發生在我身上。 我的 .m2 文件夾中有 Eclipse 沒有查看的 jar 文件。 為了解決這個問題,我做了:

右鍵單擊項目文件夾配置>轉換為Maven項目

這解決了這個問題。

有一百萬個答案,但這是另一個:將文件復制到新包中,刪除舊包並將新包重命名為舊包的名稱。

確保您沒有使用默認包。 創建一個名為“devices”的新包,並在其中復制此代碼並使用。

當我從其他包/項目復制類時,我遇到過這種情況。

菜單->項目->清理通常有幫助。

就我而言,我在問題選項卡中選擇了錯誤標記並將其刪除,因為 Java 的文件 main 方法正在正確執行。 這是 Eclipse Neon 中安裝了大量插件的一些小故障。

當我將現有項目導入到 Eclipse 時,我也遇到了這個問題。 這是一個 gradle 項目,但在導入時,我通過單擊 General-> Existing Projects into Workspace 將其作為常規項目導入。 為了解決這個問題,我通過 :::: 右鍵單擊​​項目文件夾 -> 配置 -> 添加 Gradle Nature 將 Gradle 性質添加到項目中

我使用的是 Spring Tool Suite 4。無法找出問題所在。 目錄結構根據包名。

但是清理項目對我有幫助。

我在 Eclipse IDE 中的 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>

您可能想要在項目屬性中檢查您的 Java '構建路徑',如果在那里沒有正確設置'源'目錄(路徑),那么這將導致其中所有類發生此錯誤。

因此,路徑必須指定包中的源所在的“根”(包含)目錄......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM