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


86

我在导入外部项目时遇到问题。我转到文件->导入...->现有项目到工作区,选择项目所在的文件夹,所有内容都导入了-但是项目的软件包名称似乎不是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 ) 在文件开头添加了
Sai Ram

Answers:


105

只需进入构建路径并将源路径更改src/prefix1为即可src

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


2
我该如何撤消刚刚做的一切?我单击“构建路径/用作源文件夹”,但不再起作用。编辑:我的问题的答案是进入“配置构建路径”,并从不是src /或gen /的列表中删除时髦的东西
ArtOfWarfare 2012年

25
请注意,乔恩(Jon)的建议可行,但可能需要重新启动eclipse。
Samik R

1
!! 如果更改源文件夹后仍然出现错误,请构建项目。Eclipse有时使我想粉碎一些东西。
MattC

4
关闭/打开prj为我工作... Eclipse是个大工具,它有时可能会忘记一些东西
niken 2014年

谢谢队友,很好的解决方案。
2014年

70

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

事实证明,在声明源目录之前,我在“ src”下打开了Java文件。

右键单击Eclipse中的“ src”目录后,选择“构建路径”,然后选择“用作源文件夹”

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

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

Eclipse不应再抱怨“ src”。


1
就是这样 很简单,但是让我陷了一段时间。谢谢!
Christian Vielma,2015年

设置构建路径后,关闭和重新打开文件对我也是必要的。谢谢!
ed-

是! 也为我工作。
罗伯·凯西

11

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

单击“ src”项,然后按“ F5”。

红十字会sa废。

将* .java文件返回到“程序包路径”,单击“ src”项,然后按“ F5”。

一切都应该没事。


2

如果您已经导入了现有项目,则只需删除您的源文件夹,然后再次将其添加到构建路径中,然后重新启动eclipse。在大多数情况下,eclipse会一直显示错误,直到重新启动为止。


1

在IDE外部运行失败的构建后,对我来说很高兴。如果清理工作区无效,请尝试:1)删除所有项目2)关闭并重新启动STS / eclipse,3)重新导入项目


1

对我唯一有效的方法是删除项目,然后再次导入。奇迹般有效 :)


0

有时,当导入没有.classpath文件的Android项目时,我会在Eclipse中遇到此问题。Eclipse创建的版本与Android期望的版本并不完全相同。但是,Android .classpath文件通常都是相对的,因此我只是通过错误的.c​​lasspath从另一个项目中复制了正确的.classpath文件。我创建了一个视频,展示了如何执行此操作:https : //www.youtube.com/watch?v=IVIhgeahS1Ynto


0

假设您的项目有一个类似 package name1.name2.name3.name4 (已声明的软件包)的软件包

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

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

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

我首先尝试了Build Path.Java Build Path.Source Tab.Link Source Button.Browse到package.name中的name1之前的文件夹。但是有问题。

然后我从构建路径中删除了该文件夹,并尝试了文件>导入...>常规>文件系统>单击下一步>从目录>浏览...到name1上方的文件夹>单击高级按钮>选中在工作空间中创建链接>单击完成按钮。


真正。就我而言,项目名称中添加了一个后缀-2.0.0-SNAPSHOT。删除该前缀(重命名项目..),一切正常。
JRun 2015年

0

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

注意:这是特定于日食的。


0

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


0

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


0

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

例如,如果文件夹结构为:src/main/java/com/example/dao 如果包含import语句的类'package com.example.dao'抱怨错误的包错误,则构建路径include:src/main/java 应解决了该问题。


-1
  1. 右键单击包含程序包的外部文件夹
src.prefix1.prefix.packagename1 
src.prefix1.prefix.packagename2
  1. 单击构建路径->从构建路径中删除。

  2. 现在,在项目的“文件夹”部分中进入“ prefix1”文件夹。

  3. 右键单击它->构建路径->用作源文件夹。

  4. 做完了 软件包文件夹现在不会显示任何错误。如果仍然显示,请重新启动项目。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.