此编译单元不在 Java 项目的构建路径上

Posted

技术标签:

【中文标题】此编译单元不在 Java 项目的构建路径上【英文标题】:This compilation unit is not on the build path of a Java project 【发布时间】:2014-10-13 14:22:20 【问题描述】:

当我尝试使用ctrl+space 时显示此错误:

This compilation unit is not on the build path of a Java project.

我看到有类似的主题,但我的工作环境是 Eclipse,我从 Git 中提取我的项目(我将项目作为一般项目导入)并且我使用 Apache Ant。谁能帮帮我?

【问题讨论】:

你把那个类的 jar 放在构建路径上:right click on project -> Properties -> Java Build Path -> Libraries 吗? 在部分构建路径上是文本“无可用操作”。所以我无法进入构建路径 尝试将项目导入为 Java project 而不是 general project 当我这样尝试时,没有要导入的项目,这就是我作为一般项目导入的原因。对不起,如果我的英语不太好。 【参考方案1】:

由于您将该项目作为通用项目导入,它不具有 java 特性,这就是问题所在。

在工作区的 .project 文件中添加以下行并刷新。

<natures>
      <nature>org.eclipse.jdt.core.javanature</nature>
</natures>

【讨论】:

@loganathan 在我的文件中我有这些条目,但仍然得到 org.eclipse.jdt.core.javanatureorg.eclipse.m2e.core。 maven2Nature @ImranRazaKhan - 这应该有效。如果没有,请在您的 Eclipse 中删除该项目并将该项目作为 Java 或 Maven 项目导入。 this solution + on project properties -> project facets -> java version drop-down(只需更改并返回工作版本)..this解决了我的eclipse(氧气2)中的问题 @LoganathanMohanraj 我实际上将我的项目作为现有的 maven 项目导入,我没有在 .project 文件中看到上面的代码,但是是的 maven2Nature 存在 这个 .project 文件在哪里??【参考方案2】:

Loganathan Mohanraj 的解决方案的另一种替代方案(有效地做同样的事情,但来自 GUI):

    右键单击您的项目 转到“属性” 选择“项目性质” 点击“添加” 选择“Java” 点击“应用并关闭”

【讨论】:

【参考方案3】:

如果它是一个 Maven 项目,那么有时重新导入它会有所帮助:

    右键单击项目资源管理器中的项目并选择删除。 文件 > 导入... > Maven > 现有 Maven 项目 > 下一步 > 根目录 > 从磁盘浏览您的项目。

希望它能解决问题。

【讨论】:

作为一般建议,在重新导入之前尝试执行 Maven->Update Project,它更快并且在我的情况下解决了问题【参考方案4】:

转到项目->右键单击->选择属性->项目方面->为您正在使用的JDK版本修改java版本。

【讨论】:

【参考方案5】:

对于尝试上述建议后仍有问题的人: 我通过更新 maven 项目解决了这个问题。

【讨论】:

【参考方案6】:

如果您的项目是作为现有的 maven 项目导入的,那么 --> 只需右键单击项目并进行 maven 更新。它解决了我的类似问题。

【讨论】:

欢迎来到 SO。尽管我们感谢您的回答,但如果它在其他答案之上提供额外的价值会更好。在这种情况下,您的答案不会提供额外的价值,因为另一个用户已经发布了该解决方案。如果之前的答案对您有帮助,那么您应该在获得足够的声望后投票支持【参考方案7】:

将此添加到 .project 文件中

 <?xml version="1.0" encoding="UTF-8"?>
        <projectDescription>
            <name>framework</name>
            <comment></comment>
            <projects>
            </projects>
            <buildSpec>
                <buildCommand>
                    <name>org.eclipse.wst.common.project.facet.core.builder</name>
                    <arguments>
                    </arguments>
                </buildCommand>
                <buildCommand>
                    <name>org.eclipse.jdt.core.javabuilder</name>
                    <arguments>
                    </arguments>
                </buildCommand>
                <buildCommand>
                    <name>org.eclipse.m2e.core.maven2Builder</name>
                    <arguments>
                    </arguments>
                </buildCommand>
                <buildCommand>
                    <name>org.eclipse.wst.validation.validationbuilder</name>
                    <arguments>
                    </arguments>
                </buildCommand>
            </buildSpec>
            <natures>
                <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
                <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
                <nature>org.eclipse.jdt.core.javanature</nature>
                <nature>org.eclipse.m2e.core.maven2Nature</nature>
                <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
            </natures>
        </projectDescription>

【讨论】:

【参考方案8】:

就我而言,我有 Eclipse Maven 项目。我有同样的问题,我在这里发布了问题的详细解释和答案 Eclipse Maven - Code Completion fails "This compilation unit is not on the build path of a Java project" and "Failed to Download Index" Error

【讨论】:

【参考方案9】:

我想我会添加这个作为一个潜在的原因。就我而言,我在执行文件搜索时遇到了这个问题。当我打开找到的文件时,我遇到了这个问题。

就我而言,我在 POM 项目中有一个嵌套的 Maven 模块,当我打开文件时,它打开的不是模块中的文件,而是父 POM 项目中的文件。只需从模块项目中重新打开该文件即可解决问题。

【讨论】:

以上是关于此编译单元不在 Java 项目的构建路径上的主要内容,如果未能解决你的问题,请参考以下文章

此编译单元不在Java项目的构建路径上

Java怎么进行单元测试?有具体过程和例子吗

Eclipse Java 构建路径

无法用maven编译java项目

向Order和Export构建路径添加外部jar会在项目中生成错误

使用eclipse构建springboot项目