Eclipse“此编译单元不在java项目的构建路径上”
Posted
技术标签:
【中文标题】Eclipse“此编译单元不在java项目的构建路径上”【英文标题】:Eclipse "this compilation unit is not on the build path of a java project" 【发布时间】:2011-01-13 11:25:25 【问题描述】:我无法在 Eclipse 中使用自动完成功能。
我正在开发 svn 上的项目。我在 Eclipse 中设置了项目,进入
文件 -> 导入 -> 签出为项目 -> 新建项目向导。
我选择了企业 Java 应用程序。一切似乎都很好,除了自动完成功能没有像我预期的那样工作,我得到了一个显示消息的弹出对话框
此编译单元不在 java 项目的构建路径上。
我在 Google 上搜索过,每个人都说该项目必须是 Java 项目,但它确实是!有什么问题?
更新
svn上的目录结构是这样的:
-Project_name
-application
-META-INF
application.xml
MANIFEST.MF
+build
+db
+deploy
+dist
+lib
+properties
+script
-src
-META-INF
someother.xml (datasource info)
persistence.xml
folder hierarchy with source files (should be package)
-web
some folders
.
.
files
.
.
-WEB-INF
faces-config.xml
jboss-web.xml
web.xml
build_win.xml
如何告诉 Eclipse 源文件文件夹、application.xml 和其他配置 xml 文件在哪里?
【问题讨论】:
你检查***.com/questions/908489/…了吗? 【参考方案1】:当您在父项目下有一个多模块 maven 项目时,请确保您没有在 maven 父项目中编辑文件。
【讨论】:
这个答案应该有更多的 ups,在具有嵌套子模块/项目的项目中,eclipse 导航和包资源管理器将显示每个子项目文件在其每个连续父项下的每个子项目文件,也可以单独显示。编辑时,要自动完成,上面其他答案中建议的所有其他内容都是正确的,您应该在资源管理器中使用单独的子项目(即,不在任何父项目下)。 我无法理解如何只在父项目下编辑一个类??那么为什么你说不这样做呢?我有一个父项目,并且有子项目/模块,我正在编辑其中一个出现给定错误的地方。 简单得可怜。除非在非 Maven 项目中可能发生此问题,否则应该接受答案 +1。发生在我身上的是我做了一个ctrl + H
并在文件中搜索了一些文本。结果中出现了一个文件,所以我单击它并没有意识到我所在的文件是通过父模块而不是子模块打开的。我在尝试输入 class.method 时遇到此错误。
我要补充一点,在这种情况下您会看到显然在两个“不同”位置的同一个文件,但正如答案所示,在项目本身而不是父项目下编辑它。
【参考方案2】:
为了让我的一个项目能够正确签出,我所做的是由
1) 从 svn 导入你的项目
file-->import-->SVN-Checkout Projects From SVN
2) 找到您的项目,然后在“签出为”对话框中确保您已选中单选按钮“签出为使用新建项目向导配置的项目”
3) 执行常规步骤。
向导正确拉取项目,然后设置您的 Eclipse....
不使用向导,我发现所有的地狱都崩溃了.....
希望这会有所帮助...
【讨论】:
【参考方案3】:这是我的 .project 文件中缺少的内容:
<projectDescription>
...
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildspec>
...
...
...
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
...
</projectDescription>
【讨论】:
将 jdt.core 性质添加到我的 .project 文件中为我修复了它。 完成上述修改后,我必须右键单击项目,选择 Maven 并更新项目以启动上述修改。然后它起作用了。【参考方案4】:我不时遇到这个问题,通常是因为该项目未标记为 Java 项目。您可以通过转到项目的属性 > Project Facets > 并选择 java.xml 来更改此设置。然后您可能需要正确配置该项目,但这可能是问题的一部分
【讨论】:
【参考方案5】:在将我的 java 项目转换为 maven 项目后,我也遇到了这个问题。我解决了如下:
右键单击您的项目 -> Project Facets -> 单击 Java,然后单击 Apply。
【讨论】:
我正在使用 STS 3.8.2 并按文件夹导入项目。 Java 文件位于单个子目录中,而不是标准的src/main/java
位置。我不确定这是问题所在,但运行菜单下没有选项。谢谢这有很大帮助;有几个额外的步骤。我需要在Project Facets
之前访问Properties
。还有一个 Runtimes
选项卡,我需要在其中选择我的 Java 版本。【参考方案6】:
您的文件夹中有 .project 文件吗?
我遇到了同样的问题。比我意识到我没有 .project 文件。
【讨论】:
【参考方案7】:我可能从这么多 cmets 中挑选了错误的东西,但如果您使用的是 Maven,那么您是否在执行通常的命令提示符构建和清理?
转到 cmd,导航到您的工作区(通常是 c:/workspace)。然后运行“mvn clean install -DskipTests”
之后运行“mvn eclipse:eclipse eclipse:clean”(不必担心管道问题)。
另外,您的项目中是否有任何模块依赖项?
如果是这样,请尝试单击应用删除依赖项,然后读取依赖项。因为这可以在有时与 buildpath 混淆时正确设置 Eclipse。
希望这会有所帮助!
【讨论】:
不应该是“mvn eclipse:clean eclipse:eclipse”吗?如果我正确理解您的命令,它会首先生成 Eclipse 项目,然后立即将其删除 - 这看起来像一个错误。【参考方案8】:我确实从另一个项目中复制了 .classpath 和 .project 并正确调整了值。
在编辑这些文件之前关闭项目,当您确定它们反映了现实(无论如何都是您的现实)时,在 Eclipse 中重新打开项目。
工作区已重建,从那时起一切都应该正常工作。
【讨论】:
【参考方案9】:就我而言,这是一个 Maven 项目
从 Eclipse 中删除项目,保留源代码 关闭日食 从文件系统中删除
.target/ .classpath 。项目 .设置/ 打开日食 再次导入 Maven 项目
这样就解决了问题
【讨论】:
【参考方案10】:您可能想尝试使用 -clean 启动选项运行 eclipse - 它会尝试重新构建 eclipse 的工作区元数据。
【讨论】:
【参考方案11】:mvn eclipse:eclipse
解决了我的问题
【讨论】:
【参考方案12】:这里是在eclipse中创建源文件夹的步骤。
-
右键单击项目并转到属性
从属性对话框中选择“Java Build Path”
选择源选项卡并检查源文件夹是否正确,如果未单击删除按钮删除源文件夹,或单击添加按钮添加源文件夹。
您可以在配置构建路径选项的 order 和 export 选项卡上控制源文件夹出现在项目中的顺序。
【讨论】:
【参考方案13】:遇到了同样的问题(但使用 Maven)。原因是执行程序的选择不正确:我的项目使用了无法从 Maven 的嵌入式安装中获得的全局设置。将其更改为外部(Window -> Preferences -> Maven -> Installations)并解决了问题。
【讨论】:
【参考方案14】:我所做的是从 svn 导入项目后,从工作区中删除项目并将其作为 maven 项目从本地导入。然后在 首选项-> maven->用户设置->在用户设置框中给出了settings.xml的路径,该路径将在apache maven文件夹中-> conf->settings.xml
它为我解决了这个问题。
【讨论】:
【参考方案15】:您的源文件应该在 Package Explorer 视图中带有“包”图标的结构中(在 Window 下的菜单中 > Show View em> > Package Explorer 或按 Ctrl+3 并输入 pack),如下所示:
如果不是,请选择包含根包的文件夹(上图中的src)并从上下文菜单中选择用作源文件夹(右键单击) .
【讨论】:
但它是 Java 企业项目。当我在任何文件夹上单击右键时,没有“用作源文件夹”之类的东西。 @l245c4l:尝试在 Package Explorer 视图中执行此操作(编辑我的答案以添加详细信息)。 不,它也不起作用。菜单中没有这样的元素。再次查看我的问题,我更新了它,所以现在有 svn 项目结构。感谢您的宝贵时间。【参考方案16】:如消息所述,该文件是否位于项目的 Java 构建路径(例如 Source 文件夹)中?
【讨论】:
【参考方案17】:遇到了同样的问题。 解决方案: 上下文菜单 -> Maven -> 启用依赖管理
结帐时不知道为什么丢失了。
【讨论】:
【参考方案18】:我发现我收到此错误是因为我的文件(包括我的主类)位于 .src 文件夹之外。
【讨论】:
【参考方案19】:对我有用的是从另一个项目中复制 .settings/ 目录。
【讨论】:
【参考方案20】:从终端运行“mvn eclipse:eclipse”。
【讨论】:
虽然此代码可能会回答问题,但提供有关 如何 和/或 为什么 解决问题的附加 context 将改善答案的长度长期价值。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人!请edit您的答案添加解释,并说明适用的限制和假设。提及为什么这个答案比其他答案更合适也没有什么坏处。【参考方案21】:如果您是初学者(像我一样),解决方案可能很简单,只需确保您正在处理的文件所在的父文件夹是 Java 项目即可。
我犯了一个错误,即简单地创建一个 Java 文件夹,然后在该文件夹中创建一个文件并期望它能够工作。如果您想避免此错误,该文件需要存在于项目中。
【讨论】:
【参考方案22】:在导入包含嵌套微服务的 maven 项目后,我遇到了同样的问题。这就是我在 Eclipse 中解决它的方法:
-
右键单击项目
选择配置
选择“配置和检测嵌套项目”
【讨论】:
【参考方案23】:我通过在Java Build Path
添加项目解决了这个问题
项目右键->属性->java构建路径->添加
【讨论】:
【参考方案24】:例如,如果有 4 个项目和一个根项目,则将其他子项目添加到根项目的构建路径。如果没有选择构建路径,请将以下代码添加到 .project 文件中。
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>rootProject</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
【讨论】:
以上是关于Eclipse“此编译单元不在java项目的构建路径上”的主要内容,如果未能解决你的问题,请参考以下文章