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

Posted

技术标签:

【中文标题】Eclipse:声明的包与预期的包不匹配【英文标题】:Eclipse: The declared package does not match the expected package 【发布时间】:2011-11-29 12:45:06 【问题描述】:

我在导入外部项目时遇到问题。我去 File -> Import... -> Existing Projects into Workspace,选择项目所在的文件夹并导入所有内容 - 但项目的包名称似乎不是 Eclipse 所期望的。包名都有前缀:

prefix.packagename1
prefix.packagename2

等等

但 Eclipse 期望

src.prefix1.prefix.packagename1
src.prefix1.prefix.packagename2

等等。因为目录是src/prefix1/prefix/package1

我真的不想搞乱外部代码。如何告诉 Eclipse 忽略目录“src/prefix1”?或者我还能做什么?

【问题讨论】:

我在文件开头添加了package (name of package under which the file to be ) 【参考方案1】:

只需进入构建路径并将源路径更改为src/prefix1 而不是src

最简单的方法可能是右键单击src 目录并选择“构建路径/从构建路径中删除”,然后找到src/prefix1 目录,右键单击它并选择“构建路径/用作源”文件夹”。

【讨论】:

我如何撤消刚才所做的一切?我点击了“构建路径/用作源文件夹”,没有任何效果了。编辑:我的问题的答案是进入“配置构建路径”并从列表中删除不是 src/ 或 gen/ 的时髦的东西 请注意,Jon 的建议有效,但可能需要重新启动 Eclipse。 !!如果更改源文件夹后仍然看到错误,请构建项目。 Eclipse 有时让我想砸东西。 Close/Open prj 为我工作...... Eclipse 是一个大工具,它有时会忘记事情 谢谢伙计,很好的解决方案。【参考方案2】:

我刚刚遇到这个问题,由于Skeet先生的解决方案对我不起作用,我将分享我是如何解决这个问题的。

原来我在声明源目录之前打开了'src'下的java文件。

在eclipse中右击'src'目录后,选择'build path',然后'Use as Source Folder'

关闭并重新打开已经打开的java文件(F5刷新不起作用)。

提供从“prefix1”开始的 java 文件路径与文件中的包一致(示例来自请求者的问题 prefix1.prefix.packagename2)。这应该工作

Eclipse 不应再抱怨“src”。

【讨论】:

就是这样。很简单,但让我卡了一段时间。谢谢! 在设置构建路径后关闭并重新打开文件对我来说也是必要的。谢谢! 是的!也为我工作。【参考方案3】:

将您的问题 *.java 文件移动到其他文件夹。

单击“src”项目并按“F5”。

红十字会消失。

将你的 *.java 文件返回到“包路径”,单击“src”项并按“F5”。

应该没问题。

【讨论】:

【参考方案4】:

如果您已导入现有项目,则只需删除源文件夹,然后再次将它们添加到构建路径,然后重新启动 eclipse。大多数时候eclipse会一直显示错误,直到你重新启动。

【讨论】:

【参考方案5】:

唯一对我有用的是删除项目,然后再次导入。像魅力一样工作:)

【讨论】:

【参考方案6】:

在 IDE 之外运行失败的构建后发生在我身上。如果清理工作区不起作用,请尝试:1)删除所有项目 2)关闭并重新启动 STS/eclipse,3)重新导入项目

【讨论】:

【参考方案7】:

在导入没有 .classpath 文件的 android 项目时,有时我会在 Eclipse 中遇到此问题。 Eclipse 创建的与 Android 所期望的并不完全相同。但是,Android .classpath 文件通常都是相对的,所以我只是从另一个项目中复制一个正确的 .classpath 文件到不正确的 .classpath 上。我制作了一个视频来展示我是如何做到这一点的:https://www.youtube.com/watch?v=IVIhgeahS1Ynto

【讨论】:

【参考方案8】:

假设你的项目有一个像 package name1.name2.name3.name4(声明包)

您的包浏览器显示 包顶层命名为 name1.name2 名为 name3.name4 的子包

您将遇到错误,因为 Eclipse 从您导入的位置开始从磁盘上的文件目录结构中提取包名。

我的案例涉及更多,可能是因为我使用了指向工作区外文件夹的符号链接。

我首先尝试了 Build Path.Java Build Path.Source Tab.Link Source Button.Browse to the folder name1 in your package.Folder-name as you like (我认为)。但是有问题。

然后我从构建路径中删除了该文件夹并尝试了 File > Import... > General > File System > 单击 Next > From Directory > Browse... to folder above name1 > 单击 Advanced 按钮 > 检查 Create links in workspace > 点击完成按钮。

【讨论】:

是的。在我的例子中,项目名称添加了一个后缀,-2.0.0-SNAPSHOT。删除了该前缀(重命名项目..),一切正常。【参考方案9】:

转到项目的 src 文件夹并将其中的所有代码复制到某个临时位置并构建项目。现在将实际代码从临时位置复制到项目 src。并再次运行构建。问题将得到解决。

注意:这是 eclipse 特有的。

【讨论】:

【参考方案10】:

我刚才碰巧遇到了同样的问题。但是,前几个答案对我不起作用。我提出一个解决方案:更改 .classpath 文件。例如,您可以像这样定义 classpathentry 节点的路径 : 路径="src/prefix1/java" 或路径=“src/prefix1/resources”。 希望对您有所帮助。

【讨论】:

【参考方案11】:

对我来说,问题是我将现有项目转换为 maven,根据文档创建了文件夹结构,并将“主”文件夹显示为包的一部分。我按照类似于 Jon Skeet / JWoodchuck 的说明进入 Java 构建路径,删除所有损坏的构建路径,然后将我的构建路径添加为 'src/main/java' 和 'src/test/java'作为每个资源文件夹,它解决了这个问题。

【讨论】:

【参考方案12】:

构建路径应包含包名称的“直到之前”的路径。

例如,如果文件夹结构是:src/main/java/com/example/dao 如果包含 import 语句'package com.example.dao' 的类抱怨不正确的包错误,那么构建路径应该是include:src/main/java 这应该可以解决问题。

【讨论】:

【参考方案13】:
    右键单击有包的外部文件夹
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2

    单击构建路径 --> 从构建路径中删除。

    现在转到项目文件夹部分的文件夹 prefix1。

    右键-->构建路径-->用作源文件夹。

    完成。包文件夹现在不会显示任何错误。如果仍然显示,只需重新启动项目即可。

【讨论】:

以上是关于Eclipse:声明的包与预期的包不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Java笔记:包与接口

如何在 Eclipse 上的包中制作子包?

eclipse项目有红色感叹号

用 JAVA 为 Appium 编写测试

Intellij 显示我的包不存在.. 但它存在吗?

使用 yarn 安装特定版本的包不起作用