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

时间:2011-10-02 19:31:04

标签: java eclipse package

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

prefix.packagename1
prefix.packagename2

但Eclipse期望

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

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

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

13 个答案:

答案 0 :(得分:95)

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

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

答案 1 :(得分:60)

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

事实证明我在声明它是源目录之前在'src'下打开了java文件。

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

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

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

Eclipse不再抱怨'src'。

答案 2 :(得分:10)

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

点击'src'项目,然后按“F5”。

红十字会消失。

将* .java文件返回“package path”,单击“src”项并按“F5”。

一切都应该没问题。

答案 3 :(得分:2)

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

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

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

我的案例涉及得更多,也许是因为我使用了符号链接到工作区外的文件夹。

我首先尝试使用Build Path.Java Build Path.Source Tab.Link Source Button.Browse到package.Folder-name中name1之前的文件夹(我认为)。但是有问题。

然后我从构建路径中删除了该文件夹并尝试了File>导入...>一般>文件系统>单击“下一步”>来自目录>浏览...到name1>以上的文件夹点击高级按钮>选中在工作区中创建链接>单击“完成”按钮。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

注意:这是eclipse特有的。

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

构建路径应包含软件包名称之前的'till before'路径。

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

答案 12 :(得分:-1)

  1. 右键单击包含
  2. 的外部文件夹
    {
        "_id" : ObjectId("56803181bf244c701d000170"),
        "category_id" : "65",
        "name" : "Names",
        "expandable" : false,
        "inputAsTree" : true,
        "multiSelect" : true,
        "mandatory" : false,
        "version" : 9,
        "createTime" : 1451240000.0000000000000000,
        "lastUpdateTime" : 1451280000.0000000000000000,
    }
    
    1. 点击构建路径 - >从构建路径中删除。

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

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

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