声明的包与预期的包“”不匹配

时间:2011-08-09 14:12:09

标签: java eclipse

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

22 个答案:

答案 0 :(得分:44)

尝试关闭并重新打开文件。

当文件位置或包声明完全没有问题时,可能会在eclipse中出现此错误。在花费大量时间尝试这些其他解决方案之前尝试一下。有时日食会让人感到困惑。它曾在很多场合为我工作过。我将the idea归功于Joshua Goldberg

答案 1 :(得分:42)

Eclipse期望声明的包与目录层次结构匹配 - 因此它希望您的Java文件位于源根目录下名为“Devices”的目录中。目前看起来该文件直接位于源根目录中。所以创建适当的目录,然后在那里移动文件。

请注意,传统上,软件包是小写的,并且以反向DNS顺序包含您的组织名称,例如

com.foo.devices;

答案 2 :(得分:42)

解决方案1:当我从eclipse检出的项目出现此错误“声明的包与预期包不匹配”时出现的一个解决方案CVS:

1.右键单击导航栏中的项目,然后单击“删除”
2.确保选中“删除磁盘上的项目内容”选项,然后单击“确定”。 3.删除项目后,转到文件 - >导入 - >一般 - >现有项目进入工作区
4.从目录列表中选择工作区,然后选中项目名称旁边的框。点击“完成

解决方案2:我再次收到此错误并显示以下消息

Eclipse构建错误 - 无法解析java.lang.Object 我不得不在这里提到另一条路线,错误就消失了。

与此同时,解决方法是从项目中删除JRE系统库,然后再将其添加回来。 以下是步骤:

  1. 转到带有构建错误的项目属性(右键单击>属性)查看“构建路径”部分中的“库”选项卡在列表中找到“JRE系统库”(如果缺少此项,则会出现此错误消息不是日食错误,而是错误配置的项目)
  2. 删除“JRE系统库”
  3. 点击“添加库...”,选择“JRE系统库”并为项目添加适当的JRE(例如'工作区默认JRE')
  4. 在库选择中单击“完成”,在项目属性中单击“确定”,然后等待重新构建项目
  5. 希望错误能够得到解决......

答案 3 :(得分:10)

我遇到了这个问题 - 我的包中的其他类都很好,但是有一个类有错误。包裹声明没有任何问题。

我通过执行refactor->move修复它并暂时将该类移动到另一个包,然后将refactor->move移回原始包。

答案 4 :(得分:8)

我按照以下步骤解决了问题:

  1. 选择项目 - 右键单击​​ - java构建路径。

  2. 在源标签中 - 您将src更改为src/main/java

  3. Eclipse将重新排序所有项目。

答案 5 :(得分:2)

在您的项目下创建一个名为“Devices”的新包,并将您的类放入其中。这相当于放置在项目源文件夹中名为“Devices”的目录中的类。

答案 6 :(得分:2)

您需要将该类放在文件夹Devices中。

答案 7 :(得分:1)

确保Devices被定义为项目属性中的源文件夹。

答案 8 :(得分:1)

我通过删除"排除"我的.classpath文件中该包的属性。删除属性,而不是整个标记,或者" src / java"将不再是源文件夹。

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

答案 9 :(得分:1)

通过提及程序包名称

解决了该问题

我移动了文件 Test_Steps.java ,该文件位于软件包 stepDefinition

enter image description here

只需添加软件包stepDefinition 即可解决问题

因此,当您拥有一个软件包并且没有在类文件中使用该问题时,就会发生此问题。

添加它已解决了问题,该错误不再出现。

enter image description here

答案 10 :(得分:0)

确保您已创建了正确的包。您可能有机会创建文件夹而不是包

答案 11 :(得分:0)

  1. 在项目的工作区根目录中创建目录[your.project.name]。

  2. 将* .java从“src”复制到该目录。

  3. 关闭并重新开启项目。

答案 12 :(得分:0)

当我从eclipse中的svn存储库中检出项目时,这发生在我身上。我的.m2文件夹中有jar文件,eclipse没有看到。为了解决我所做的问题:

右键单击项目文件夹配置&gt;转换为Maven项目

这解决了这个问题。

答案 13 :(得分:0)

有一百万个答案,但这是另一个答案: 将文件复制到新包中,删除旧包并将新包重命名为旧包的名称。

答案 14 :(得分:0)

确保您没有使用默认包。创建一个名为'devices'的新包,并在其中复制此代码并使用。

答案 15 :(得分:0)

当我从其他包/项目中复制类时,我遇到过这种情况。

菜单 - &gt;项目 - &gt;清洁通常有帮助。

答案 16 :(得分:0)

在我的情况下,我在Problems选项卡中选择了错误标记并删除了它,因为正确执行了Java的文件main方法。这是Eclipse Neon中的一些小问题,它安装了大量的插件。

答案 17 :(得分:0)

当我导入现有项目以使其黯然失色时,我也遇到了这个问题。这是一个gradle项目,但是在导入时,我通过单击General-> Existing Projects到Workspace将其作为常规项目导入。为了解决这个问题,我通过以下方式将Gradle性质添加到了项目中   ::::右键单击Project文件夹-> Configure-> Add Gradle Nature

答案 18 :(得分:0)

我正在使用Spring Tool Suite4。无法解决问题。目录结构是根据软件包名称确定的。

  

但是清理项目对我有帮助。

答案 19 :(得分:0)

我在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>

答案 20 :(得分:0)

我修复了这个问题,只是将名称更改为小写,现在Eclipse可以识别该软件包了。

答案 21 :(得分:0)

您可能想要在项目属性中检查您的 Java '构建路径',如果在那里没有正确设置'源'目录(路径),那么这将导致其中所有类发生此错误。< /p>

因此路径必须指定包中的源所在的“根”(包含)目录...