声明的包与预期的包“”不匹配
我正在使用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期望声明的包匹配目录层次结构 – 所以它期望您的Java文件位于源根目录下的“Devices”目录中。 目前看起来这个文件直接在你的源代码中。 因此,创build适当的目录,并在那里移动文件。
请注意,传统上,软件包是小写字母,并且以反向DNS顺序包含您的组织名称,例如
com.foo.devices;
解决scheme1:当我从eclipse CVS签出的项目发生这个错误“ 声明的包与预期的包不匹配 ”时出现了一种解决scheme:
1.右键单击导航栏中的项目,然后单击“删除”
2.确保“ 删除磁盘上的项目内容 ”选项不被选中,然后单击“确定”。
3.删除项目后,进入文件 – >导入 – >常规 – >现有项目到工作区
4.从目录列表中select您的工作区,并选中项目名称旁边的checkbox。 点击“ 完成 ”
解决scheme2:我再次遇到以下消息的这个错误
Eclipse构build错误 – 无法解决java.lang.Object我不得不按照这里提到的另一个路由,错误消失了。
与此同时,解决方法是从项目中删除JRE系统库,然后再将其添加回来。 这里是步骤:
- 转到具有构build错误的项目属性(右键单击>属性)在“构buildpath”部分中查看“库”选项卡在列表中find“JRE系统库”(如果缺less,则此错误消息不是日食错误,但一个错误configuration的项目)
- 删除“JRE系统库”
- 点击“Add Library …”,select“JRE System Library”并为项目添加合适的JRE(例如“工作区默认JRE”)
- 点击库选项中的“完成”和项目属性中的“确定”,然后等待项目的重新构build
希望错误将被解决…
尝试closures并重新打开文件。
当文件位置或包声明完全没有错误时,在eclipse中可能会出现这个错误。 在花费大量时间尝试这些其他解决scheme之前,尝试一下。 有时候月蚀会让人困惑。 这在很多情况下都适用于我。 我赞赏Joshua Goldberg的想法。
我遇到了这个问题 – 我包里的其他类都没问题,但是有一类错误。 包声明没有错。
我通过refactor->move
并将其移动到另一个软件包中,然后refactor->move
回到原始软件包。
我通过以下步骤解决了问题:
-
select项目 – 右键单击 – java构buildpath。
-
在源代码标签 – 你把
src
改为src/main/java
。 -
Eclipse将重新排列所有项目。
你需要有一个文件夹里面的类Devices
。
在您的项目中创build一个名为“设备”的新软件包,并将其放入您的课堂。 这相当于放置在项目源文件夹中名为“Devices”的目录中的类。
确保Devices
被定义为项目属性中的源文件夹。
得到了同样的错误,但我的包是绝对正确的。 当我closures并打开我的编辑器时,错误消失。 希望这可能有助于在某些情况下。
确保您已经创build了正确的包。您可能有机会创build文件夹而不是包
-
在工程的工作区根目录下创build目录[your.project.name]。
-
将* .java从“src”复制到该目录。
-
closures并重新打开项目。
这发生在我从eclipse的svn仓库中检出一个项目时。 在我的.m2文件夹中有eclipse没有看到的jar文件。 要解决这个问题,我做了:
右键点击项目文件夹Configure> Convert to Maven Project
并解决了这个问题。
有一百万个答案,但还有另外一个答案:将这些文件复制到一个新的软件包中,删除旧的软件包并将新的软件包重命名为旧的软件包名称。
确保你没有使用默认包。 创build一个名称为“devices”的新包,并将其复制到其中并使用。
当我从其他软件包/项目复制类时,我有这种情况。
菜单 – >项目 – >清洁通常有帮助。
在我的情况下,我select了问题标签中的错误标记,并将其删除,因为Java的文件main方法正在被正确执行。 Eclipse Neon中安装了大量的插件,这是一个小故障。
我通过删除我的.classpath
文件中该包的“排除”属性来解决这个问题。 删除属性,而不是整个标签,或“src / java”将不再是一个源文件夹。
<classpathentry excluding="com/myproject/mypackage/mysubpackage/" kind="src" path="src/java"/>