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

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

242215 次浏览

Eclipse 希望声明的包与目录层次结构匹配——因此它希望 Java 文件位于源根目录下名为“ Devices”的目录中。目前看来,该文件直接位于您的源根目录中。因此,创建适当的目录,并将文件移动到其中。

请注意,按照惯例,包是小写的,并且以反向 DNS 顺序包含您的组织名称,例如。

com.foo.devices;

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

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

解决方案1: 当我从 eclipseCVS 退出的一个项目出现这个错误“ 声明的包与预期的包不匹配”时,我使用的一个解决方案:

1. 右键单击导航栏中的项目,然后单击“删除”
2. 确保“ 删除磁盘上的项目内容”选项为选中的 NOT,然后单击“确定”。
3.Now after the project is deleted, go to File -> Import -> General -> Existing Projects into Workspace
4.Select your workspace from the directory listing and check the box next to your project name. Click '结束'

解决方案2: 再一次,我得到了以下消息的这个错误

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

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

  1. 转到项目的属性与构建错误(右键单击 > 属性)查看“构建路径”部分的“库”选项卡在列表中找到“ JRE 系统库”(如果这是缺少的,那么这个错误消息不是一个 Eclipse bug,而是一个配置错误的项目)
  2. 删除“ JRE 系统库”
  3. 点击“添加库...”,选择“ JRE 系统库”并为项目添加适当的 JRE (例如“ Workspace default JRE”)
  4. 在库选择中点击“ Finish”,在项目属性中点击“ OK”,然后等待项目的重新生成

希望这个错误能得到解决。

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

我遇到了这个问题——包中的其他类都很好,但是有一个类出现了相应的错误。包裹申报单没有问题。

I fixed it by doing refactor->move and moved the class to another package temporarily, then refactor->move back to the original package.

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

得到了同样的错误,但我的包绝对正确。当我关闭并打开编辑器时,错误就消失了。希望这能在某些情况下有所帮助。

尝试关闭和重新打开该文件。

当文件位置或包声明绝对没有任何错误时,可能会在 eclipse 中出现此错误。在花费大量时间尝试其他解决方案之前,请先尝试一下。有时候日食会让人困惑。在很多情况下,这招对我都管用。我把 这个想法归功于 约书亚 · 金伯格

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

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

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

当我在 eclipse 中从 svn 存储库签出一个项目时发生了这种情况。在我的。M2文件夹,日食没有看。为了解决这个问题,我做了:

右键单击项目文件夹配置 > 转换为 Maven 项目

这样问题就解决了。

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

我通过以下步骤解决了这个问题:

  1. Select the project - Right click - java build path.

  2. 在源标签-你改变 srcsrc/main/java

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

确保您没有使用默认包。创建一个名为“设备”的新包,并在其中复制此代码,然后使用。

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

菜单-> 项目-> 清洁通常有帮助。

在我的例子中,我选择了 problem 选项卡中的错误标记并删除了它,因为 Java 的 file main 方法正在被正确执行。这是 EclipseNeon 在安装了大量插件后出现的一些小故障。

我通过在 .classpath文件中删除该包的“排除”属性来修复这个问题。删除属性,而不是整个标记,否则“ src/java”将不再是源文件夹。

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

当我导入一个已存在的项目来 Eclipse 时,我也遇到了这个问题。它是一个 gradle 项目,但是在导入的时候,我将它作为常规项目导入,方法是单击 General-> 現有项目到工作区。为了解决这个问题,我在项目中添加了 右键点击项目文件夹-> 配置-> 添加级别性质

我用的是 Spring Tool Suite 4。不能解决这个问题。目录结构是根据包的名称。

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

这个问题通过提及 包裹名称得到了解决

我移动了我的文件 Test _ Steps. java,这是在包 步骤定义

enter image description here

只要加入 包定义问题就解决了

因此,当您有一个包并且没有在类文件中使用时,就可能出现这个问题。

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

enter image description here

我在 EclipseIDE 中的一个 maven 项目也有同样的问题。我可以通过替换。使用正确格式的类路径文件。更换后关闭并打开项目。

Sample .classpath file

<?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>

I fix it just changing the name to lowercase and now Eclipse recognizes the package.

you might want to check your Java 'build path' in the project properties, if the 'source' directory (path) is not properly setup in there, then this will cause this error to occur for all the classes therein.

因此,路径 must指定包中的源所在的‘ root’(包含)目录..。

我们能做的另一件事是 在出现错误时,ctrl + 输入并将文件移动到预期的包中