我正在使用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
。
答案 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系统库,然后再将其添加回来。 以下是步骤:
希望错误能够得到解决......
答案 3 :(得分:10)
我遇到了这个问题 - 我的包中的其他类都很好,但是有一个类有错误。包裹声明没有任何问题。
我通过执行refactor->move
修复它并暂时将该类移动到另一个包,然后将refactor->move
移回原始包。
答案 4 :(得分:8)
我按照以下步骤解决了问题:
选择项目 - 右键单击 - java构建路径。
在源标签中 - 您将src
更改为src/main/java
。
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
下只需添加软件包stepDefinition 即可解决问题
因此,当您拥有一个软件包并且没有在类文件中使用该问题时,就会发生此问题。
添加它已解决了问题,该错误不再出现。
答案 10 :(得分:0)
确保您已创建了正确的包。您可能有机会创建文件夹而不是包
答案 11 :(得分:0)
在项目的工作区根目录中创建目录[your.project.name]。
将* .java从“src”复制到该目录。
关闭并重新开启项目。
答案 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>
因此路径必须指定包中的源所在的“根”(包含)目录...