[英]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 系統庫,然后重新添加它。 以下是步驟:
希望錯誤能得到解決......
我按照以下步驟解決了這個問題:
選擇項目-右鍵-java構建路徑。
在源選項卡中 - 您將src
更改為src/main/java
。
Eclipse 將重新排序所有項目。
我遇到了這個問題 - 我的包中的其他類很好,但有一個類有錯誤。 包聲明沒有任何問題。
我通過執行refactor->move
修復它並將類臨時移動到另一個包,然后refactor->move
回原始包。
我修復它只是將名稱更改為小寫,現在 Eclipse 可以識別該包。
在您的項目下創建一個名為“設備”的新包,並將您的類放入其中。 這相當於將類放置在項目源文件夾中名為“Devices”的目錄中。
您需要將類放在文件夾Devices
。
確保在項目屬性中將Devices
定義為源文件夾。
遇到了同樣的錯誤,但我的包裹絕對正確。 當我剛剛關閉並打開我的編輯器時,錯誤消失了。 希望這可能會在某些情況下有所幫助。
我通過在我的.classpath
文件中刪除該包的“排除”屬性來解決這個問題。 刪除屬性,而不是整個標簽,否則“src/java”將不再是源文件夾。
<classpathentry excluding="com/myproject/mypackage/mysubpackage/" kind="src" path="src/java"/>
確保您創建了正確的包。您可能有機會創建文件夾而不是包
在項目的工作區根目錄中創建目錄 [your.project.name]。
將 *.java 從“src”復制到該目錄。
關閉並重新打開項目。
當我從 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.