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


78

我无法在Eclipse上使用自动补全功能。

我正在svn上的项目。我通过在Eclipse中设置项目

文件->导入->作为项目签出->新建项目向导。

我选择Enterprise Java Application,并且正在下载它。一切似乎都工作正常,除了自动补全工作正常,因为我希望我得到一个显示消息的弹出对话框

该编译单元不在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文件在哪里?


Answers:


132

当您在父项目下有一个多模块Maven项目时,请确保您没有在Maven父项目中编辑文件。


19
这个答案应该更多,在带有嵌套子模块/项目的项目中,日食导航和包浏览器将在每个子项目文件的下一个父项目下显示每个子项目文件,并且还会单独显示每个子项目文件。编辑时,要具有自动补全功能,上述其他答案中建议的所有其他内容都是正确的,则应在资源管理器中单独使用using子项目(即不在任何父项目下)。
Pete_ch 2013年

2
我不明白如何仅在父项目下编辑类?那么为什么你说不这样做呢?我有一个父项目,并且有子项目/模块,我正在编辑其中一个给定错误发生的地方。
Samitha Chathuranga 2014年

可悲的简单。除非在非Maven项目中可能出现此问题,否则应该接受答案
mister270 '16

+1。我发生了什么事,我做了一个,ctrl + H并在文件中搜索了一些文本。结果中出现一个文件,因此我单击了它,但没有意识到我所在的文件是通过父级而不是子级模块打开的。我在尝试输入class.method时遇到此错误。
prograhammer

我要补充一点,在这种情况下,您将看到的是同一个文件,显然在两个“不同”位置,但是正如答案所示,请在项目本身而不是父项目下对其进行编辑。
杰夫

17

我所做的使我的项目之一正确检出的工作是

1)从svn导入您的项目

      file-->import-->SVN-Checkout Projects From SVN

2)找到您的项目,然后在“签出为”对话框中,确保选中单选按钮“使用新项目向导配置为作为项目签出”

3)定期进行。

向导会正确提取项目,然后设置日食...。

没有使用向导,我发现所有的地狱都变得松散了.....

希望这可以帮助...


17

这是我的.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文件中,为我修复了它。
Urchin

完成上述更改后,我必须右键单击该项目,选择Maven并更新项目以进行上述更改。然后它起作用了。
Kumar S

10

我有时会遇到这个问题,通常是因为该项目没有被标记为Java项目。您可以通过以下方法更改此设置:转到项目> Project Facets>的属性,然后选择java。然后,您可能需要正确配置该项目,但这可能是问题的一部分


5

将Java项目转换为Maven项目后,我也遇到了这个问题。我解决了如下问题:

右键单击您的项目-> Project Facets->单击Java,然后单击Apply。


我正在使用STS 3.8.2,并通过文件夹导入了一个项目。Java文件位于单个子目录中,而不是标准src/main/java位置中。我不确定这是问题所在,但运行菜单下没有选项。谢谢,这帮了很多忙;还有几个额外的步骤。我需要去Properties之前Project Facets。还有一个Runtimes选项卡需要选择Java版本。
wsams

4

您的文件夹中是否有.project文件?

我遇到了同样的问题。比我意识到我没有.project文件。


14
那你是怎么做的?
Pete_ch

4

我可能从很多评论中发现了错误的内容,但是如果您使用的是Maven,那么您是否正在按照通常的命令提示符进行构建和清理?

转到cmd,导航到您的工作区(通常为c:/ workspace)。然后运行“ mvn clean install -DskipTests”

之后,运行“ mvn eclipse:eclipse eclipse:clean”(不必担心管道问题)。

另外,您的项目中是否有模块依赖项?

如果是这样,请尝试单击“应用”除去依赖项,然后读取依赖项。因为这有时会使Eclipse与buildpath混淆时可以正确设置Eclipse。

希望这可以帮助!


应该不是“ mvn eclipse:clean eclipse:eclipse”吗?如果我正确理解了您的命令,它将首先生成Eclipse项目,然后立即将其删除-看起来像个bug。
Frank Schmitt

2

我确实从另一个项目复制了.classpath和.project,并正确调整了值。

在编辑这些文件之前,请关闭项目,如果确定它们可以反映现实情况(无论如何还是您的现实情况),请在Eclipse中重新打开该项目。

工作空间将被重建,并且从那时开始所有工作。


2

就我而言,这是一个行家项目

从eclipse删除项目,使源关闭eclipse从文件系统删除

.target / .classpath .project .settings / open eclipse再次导入Maven项目

这样解决了问题


2

您可能想尝试使用-clean启动选项运行eclipse-它尝试重新构建工作区的eclipse元数据。



1

这里是在Eclipse中创建源文件夹的步骤。

  1. 右键单击该项目,然后转到属性
  2. 从属性对话框中选择“ Java构建路径”
  3. 选择“源”选项卡,如果没有单击“删除”按钮以删除源文件夹,或者单击“添加”按钮以添加源文件夹,请检查源文件夹是否正确。

您可以控制源文件夹在项目中的顺序,该命令位于“配置构建路径”选项上的“顺序和导出”选项卡上。


1

遇到相同的问题(但使用Maven)。原因是错误地选择了执行程序:我的项目使用的全局设置不适用于Maven的嵌入式安装。将其更改为外部(窗口->首选项-> Maven->安装),从而解决了该问题。


1

我所做的是从svn导入项目后,从工作区中删除了该项目,然后从本地将其作为maven项目导入了。然后在首选项-> maven->用户设置->用户设置框中提供了settings.xml的路径,该路径将在apache maven文件夹-> conf-> settingss.xml中

它为我解决了这个问题。


1

您的源文件应在Package Explorer视图中(在Window > Show View > Package Explorer下的菜单中,或按Ctrl+3并键入pack),在带有“ package”图标的结构中,如下所示:

Eclipse中的Java项目

如果不是,请选择包含根包的文件夹(上图中的src),然后从上下文菜单中选择“用作源文件夹”(右键单击)。


但这是Java Enterprise项目。当我右键单击任何文件夹时,没有诸如用作源文件夹之类的东西。
l245c4l 2010年

@ l245c4l:尝试在Package Explorer视图中执行此操作(编辑了我的答案以添加详细信息)。
Fabian Steeg 2010年

不,它也不起作用。菜单中没有这样的元素。再次检查我的问题,我更新了它,所以现在有了svn项目结构。谢谢你的时间。
l245c4l 2010年

0

就像消息说的那样,文件是否在项目的Java Build Path上的某个位置(例如Source文件夹)?


0

有同样的问题。解决方案:上下文菜单-> Maven->启用依赖项管理

退房时不知道为什么丢失了它。



0

对我有用的是从另一个项目中复制.settings /目录。


0

从终端运行“ mvn eclipse:eclipse”。


2
尽管此代码可以回答问题,但提供有关如何和/或为什么解决问题的其他上下文将提高答案的长期价值。请记住,您将来会为读者回答问题,而不仅仅是现在问的人!请编辑您的答案以添加说明,并指出适用的限制和假设。提一下为什么这个答案比其他答案更合适也无妨。
Dev-iL

0

如果您是像我这样的初学者,则解决方案可能很简单,只需确保您正在处理的文件的父文件夹是Java项目即可。

我犯了一个错误,就是简单地创建一个Java文件夹,然后在该文件夹中创建一个文件并期望它能正常工作。如果要避免此错误,该文件必须存在于项目中。



-1

例如,如果有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>

-1
  1. 删除项目(不要在文件系统中删除原始文件)
  2. 右键单击“程序包浏览器”区域,然后右键单击导入。
  3. 转到Maven文件夹,然后单击导入现有的Maven项目。

希望能帮助到你

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.