【问题标题】:Eclipse Build Path Nesting ErrorsEclipse 构建路径嵌套错误
【发布时间】:2012-06-05 23:26:04
【问题描述】:

我正在为我的班级开发一个简单的 JSP/Servlet/Tomcat webapp。教授要求我们使用与默认动态 Web 项目结构略有不同的文件夹结构。而不是使用 webcontent 文件夹,他想要我们所有的源代码在 src/main/java 和 src/main/webapp 下。

当我运行应用程序时,我的欢迎文件显示正常,但是当我尝试访问我的 servlet 时,我得到:

 Http 500 SEVERE: Allocate exception for servlet InitDb

java.lang.ClassNotFoundException。我很确定这是构建路径错误。我在构建路径上有 final/src,但我收到了警告

"Cannot nest 'final/src/main/webapp/WEB-INF/classes' inside 'final/src'. To enable the    nesting exclude 'main/' from 'final/src'

我的部署程序集中有这个:

<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> 

当我排除 main/ 时,警告消失了,但它并不能解决问题。我会很感激任何建议。谢谢。

【问题讨论】:

    标签: java eclipse tomcat servlets


    【解决方案1】:

    遇到类似问题。做了以下步骤,问题解决了:

    1. 在 Eclipse 中删除项目。
    2. 删除 .Project 文件和 .设置文件夹。
    3. 将项目作为现有的maven项目再次导入eclipse。

    【讨论】:

      【解决方案2】:

      这取决于告诉哪个文件夹“用作源文件夹”。在图片的结构中,如果对文件夹“目标”或“生成”说,他会得到“嵌套”错误。但是在 pom.xml 的“插件”部分中提到的最后一个“cxf”文件夹以及包结构的开始位置(如 .wsdl 文件所示),即 - 正确的文件夹“源”一个,则没有错误

      【讨论】:

        【解决方案3】:

        这是一个简单的解决方案:

        1. 右键项目>>属性>>构建路径;
        2. 在“源”选项卡中,选择所有源文件夹;
        3. 删除它们;
        4. 右键项目,Maven >> 更新项目。

        【讨论】:

        • 感谢您拯救了我的一天!
        【解决方案4】:

        这让我陷入了用 Eclipse 修复故障的巨大困境,但我只是从 Eclipse 中删除了该项目并重新导入它来修复它。

        【讨论】:

          【解决方案5】:

          我想对这个帖子给出一个非专业的答案。

          由于版本控制和严格的目录结构原因,我无法按照 Acheron 的回答(最佳答案)执行类似于删除 src/ 并将 src/main/java 和 src/test/java 添加到构建路径的操作。

          实际上,我已经断断续续地与这个嵌套构建路径问题作斗争了几个星期。错误信息中提示了问题的答案:

          To enable the nesting exclude 'main/' from 'final/src'

          修复

          在您的构建路径中,您需要编辑您的Inclusion and Exclusion Patterns,方法是点击Excluded: (None),然后点击Edit...:

          1. 转到导航器并右键单击项目
          2. 构建路径
          3. 配置构建路径
          4. 来源(标签)

          您可以在此处将main/webapp/WEB-INF/classes 添加为Exclusion Pattern。然后它应该允许您将main/webapp/WEB-INF/classes 作为单独的源文件夹添加到构建路径。

          【讨论】:

          • 很好的答案。正是我面临的问题。赞成。
          【解决方案6】:

          在我的情况下,我在 eclipse 中有一个 gradle 自然项目,问题出在 build.gradle 中,其中指定了这个 sourceSets:

          sourceSets {
              main {
                  java {
                      srcDir 'src'
                  }
              }
           }
          

          这似乎适用于 intelliJ,但似乎 eclipse 不喜欢巢 src、src/java、src/resources。在 eclipse 中,我必须将其更改为:

          sourceSets {
              main {
                  java {
                      srcDir 'src/main/java'
                  }
              }
          }
          

          【讨论】:

            【解决方案7】:

            接受的解决方案对我不起作用,但我对项目设置进行了一些挖掘。

            如果您使用的是动态 Web 项目,以下解决方案至少为我修复了它:

            1. 右键单击项目,然后单击属性。 (或在项目中按 alt-enter)
            2. 在部署程序集下删除“src”。

            你应该可以添加 src/main/java.它还会自动将其添加到部署程序集。

            警告:如果您添加了 src/test/java,请注意它也会将其添加到部署程序集。一般来说,你不需要这个。你可以删除它。

            【讨论】:

              【解决方案8】:

              我遇到了同样的问题,上面的正确答案对我不起作用。我解决这个问题的方法是转到Build Path-&gt;Configure Build Path 并在源选项卡下删除所有源(只有一个源)并从那里重新配置它们。我最终从 eclipse 中删除了项目并再次导入 maven 项目以清除错误。

              【讨论】:

              • 亲爱的,你值得这个世界!太感谢了。这都是关于不正确的 Maven 结构。
              【解决方案9】:

              试试这个:

              从库选项卡:

              Eclipse -> right click on project name in sidebar -> configure build path -> Libraries
              

              删除您的网络应用程序库:

              click on "Web App Libraries" -> click "remove"
              

              将它们重新添加:

              click "Add Library" -> click to highlight "Web App Libraries" -> click "next" -> confirm your desired project is the selected option -> click "Finish"
              

              突出显示“Web 应用程序库”:

              【讨论】:

                【解决方案10】:

                创建两个文件夹:final/src/ 用于存储源 java 代码,以及 final/WebRoot/.

                您不能将源代码和 webroot 放在一起。我想你可能误解了你的老师。

                【讨论】:

                  【解决方案11】:

                  即使我创建了一个新项目,我也遇到了同样的问题。 我在 Eclipse 中创建 Java 项目,然后对其进行 mavenize,然后进入 java 构建路径属性,删除 src/ 并添加 src/main/java 和 src/test/java。当我运行 Maven 更新时,它曾经给出嵌套路径错误。
                  然后我终于意识到-因为我之前没有看到该条目-当我对它进行 mavenize 时,在 pom 文件中写入了 &lt;sourceDirectory&gt;src&lt;/sourceDirectory&gt; 行。删除后解决。

                  【讨论】:

                  • 这只是众多随机技巧之一。不解释为什么。因此帮助不大。
                  • 我刚刚将 pom 条目重命名为 scr/main/java,一切都很好。感谢您的帖子 acheron55
                  • 你把它放在那里了吗?或者它来自哪里?
                  • 这个&lt;sourceDirectory&gt;src&lt;/sourceDirectory&gt;在我更改了maven-compiler-plugin的JDK版本后出现在我的pom.xml中。
                  【解决方案12】:

                  要使 Eclipse 编译器正常工作,您需要从源路径中删除 final/src 并添加 final/src/main/java。这也可以解决您的问题,因为现在构建目录不会在 Java 源文件夹中。

                  【讨论】:

                    【解决方案13】:

                    您必须将构建输出所在的源目录和目标目录分开。同样重要的是要注意,任何类文件都不能最终出现在源目录中。这并不违反您教授的建议——实际上他正在推广适用于 ./src/main/java 和 ./src/main/webapp 的 maven 标准源代码结构。第二个应该持有例如。强制性的 WEB-INF/web.xml 文件,但你永远不会把实际的类放在那里。

                    你需要改变的是你的目标目录。我建议使用相同的标准并为此选择名称“./target”。所有构建的文件都将放在此处,并将其打包将产生正确的可部署工件。如果您以后迁移到使用 maven,它也将有助于以脚本化、可重复的方式执行此操作。

                    希望能解决您的问题。

                    【讨论】:

                      猜你喜欢
                      • 2013-11-17
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多