【问题标题】:Missing Project in the Java Build Path - Projects settingsJava 构建路径中缺少项目 - 项目设置
【发布时间】:2015-05-06 03:08:27
【问题描述】:

Eclipse 工作区中导入了两个 java 项目:

  • MainProject
  • SecondProject

MainProjectSecondProject 的构建路径所必需的。

在我将两个项目的源代码迁移到我们的Team Foundation Server 之前,MainProject 通过"Java Build Path" -> "Projects" 选项卡在SecondProject 的属性中被引用。一切正常。

现在,通过Team Explorer Everywhere 插件将两个项目从TFS 导入到干净的Eclipse 工作区后,MainProject 项目在"Projects" 选项卡和"Add..." 按钮对话框中不再可见。

有趣的是MainProject 也不可见,例如在Project -> Clean... 对话框中但在project properties -> "Project References" 对话框中可见...

问题出在哪里???

Eclipse 版本 3.6.2 (Helios SR2),TFS 2010 SP1

附:如果我手动将<classpathentry kind="src" path="/MainProject"/> 添加到.classpath,则会显示错误“Project 'SecondProject' is missing required Java project: 'MainProject'”。

【问题讨论】:

    标签: java eclipse tfs team-explorer-everywhere


    【解决方案1】:

    我可能完全错了,但在我看来,Eclipse 可能不会将您导入的 TFS 项目视为“Java”项目(Eclipse 还支持“普通”项目等)。当您查看项目的包层次结构中的 *.java 文件时,它们各自的图标中是否有一个纯蓝色的“J”或者它们是“空心的”?

    如果前者是真的,那么 Eclipse 将您的项目视为 Java 项目,我会彻底糊涂,您可以忽略我的回答;)

    如果后者为真,则该项目未配置为“Java 项目”。这可能是一团糟……但在这种情况下,一种解决方案可能是将现有项目重命名为其他项目(例如 MainProjectOld、SecondProjectOld),创建新的“MainProject”和“SystemProject”项目作为新的“Java”项目,然后将所有源代码从旧的源文件夹复制到新的源文件夹。我对 TeamFoundationServer 了解不多,但我假设此时您可以使用 TFS 重新连接您的新项目,并将它们作为 Java 项目重新提交。

    编辑

    底线是,如果后者是真的,那么听起来项目配置 XML 文件没有进入 TFS,并且 Eclipse 对它应该如何处理项目(普通、Java 或其他)之后感到困惑从 TFS 初始导入。我在 CVS 和 SVN 中也看到过这种情况,所以我假设这是 Eclipse 支持的任何版本控制系统中相当普遍的问题。 TFS 可能包含在这一组中。

    【讨论】:

    • 是的,就是这样!可惜我不能多次投票赞成答案:) 所有 *.java 文件都存在“J”,但项目图标上缺少“J”。这是一个很好的提示! TFS 中也缺少 .project 文件,这导致了所有这些问题。
      作为修复,您可以通过添加<nature>org.eclipse.jdt.core.javanature</nature>org.eclipse.jdt.core.javabuilder 手动修改.classpath 文件。至少这解决了我的问题。
    • @Dime:如果您不想签入 .project 文件(尽管这是我非官方推荐的),一个提示(可能)会有所帮助:在从 TFS 导入向导中,您可以选择“为非 Eclipse 项目的文件夹显示新项目向导”以自定义 .project 在导入时创建。
    • 太棒了,很高兴它成功了!我似乎永远在使用 CVS 时遇到了同样的问题......很高兴你能够快速解决它:)
    • @Edward Thomson 谢谢!但我确实想将这些文件保存在 TFS 中。不幸的是,默认情况下它们被微软的插件排除在外。因此,您必须在Windows -> Preferences -> Team -> Ignored Resources 中手动取消选中它们。
    • @Dime: 有趣 - 默认情况下,.project 在我的团队忽略的资源中不是(Eclipse Classic 3.7)。但是,您是正确的,因为我们确实遵守了团队忽略的资源设置。
    【解决方案2】:

    您应该确保应用程序具有 .project,当您从存储库中签出代码时,.project 可能不可用,您应该使用 'mvn eclipse:eclipse' 命令在代码所在的文件夹中从命令行创建 .project 和重启你的eclipse。

    【讨论】:

      【解决方案3】:
      First go to your project root and edit .project file . make sure there have entry for javabuilder as following . If not then 
      <buildCommand>
          <name>    org.eclipse.jdt.core.javabuilder    </name>
          <arguments>
          </arguments>
      </buildCommand>
      Full .Project file looks like.
      
      <?xml version="1.0" encoding="UTF-8"?>
      <projectDescription>
          <name>Your Project </name>
          <comment></comment>
          <projects>
          </projects>
          <buildSpec>
              <buildCommand>
                  <name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
                  <arguments>
                  </arguments>
              </buildCommand>
              <buildCommand>
                  <name>org.eclipse.jdt.core.javabuilder</name>
                  <arguments>
                  </arguments>
              </buildCommand>
              <buildCommand>
                  <name>org.eclipse.wst.common.project.facet.core.builder</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.wst.common.project.facet.core.nature</nature>
              <nature>org.eclipse.jdt.core.javanature</nature>
              <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
          </natures>
      </projectDescription>
      

      【讨论】:

        【解决方案4】:

        我不熟悉 Team Foundation Server,但如果您想在 Eclipse 内部和外部构建项目,我建议使用 Maven。

        【讨论】:

        • 您的回答与问题无关。
        • ?当然有。这是推荐的方式,恕我直言。不要直接摆弄 .classpath 文件。使用 Maven 构建您的项目。然后在你的 CI 服务器中使用一个 Maven 插件。
        • 我认为我确实误读了这个问题。这似乎是关于在 Eclipse 中重新导入而不是在 TFS 上构建。虽然这可能是下一个问题。
        猜你喜欢
        • 2013-02-27
        • 1970-01-01
        • 2015-03-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-15
        • 1970-01-01
        • 1970-01-01
        • 2011-09-25
        相关资源
        最近更新 更多