Eclipse构建路径嵌套错误

问题

我正在为我的班级开发一个简单的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'

enter image description here

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

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

当我排除主要/警告消失,但它不能解决问题。我很感激任何建议。谢谢。


#1 热门回答(263 赞)

即使我创建了一个新项目,我也遇到了同样的问题。我在Eclipse中创建Java项目,然后对其进行mavenize,然后进入java构建路径属性removesrc/并添加src/main/javasrc/test/java。当我运行Maven更新时,它曾用于提供嵌套路径错误。
然后我终于意识到 - 因为我之前没有看过那个条目 - 当我对它进行mavenize时,pom文件中有一个<sourceDirectory>src</sourceDirectory>行。它被删除后解决了。


#2 热门回答(15 赞)

我想对这个帖子提出一个非常少的回答。

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

实际上我已经连续几周与这个嵌套的构建路径问题进行了斗争。错误消息中暗示了问题的答案:
To enable the nesting exclude 'main/' from 'final/src'修复
在你的构建路径中,你需要通过单击Excluded: (None)然后单击Edit...来编辑你的Inclusion and Exclusion Patterns

  • 转到导航器并按下右键单击项目
  • 构建路径
  • 配置构建路径
  • 来源(标签)

Exclusion Patterns

在那里你可以添加main/webapp/WEB-INF/classesas anExclusion Pattern。然后它应该允许你将构建路径添加main/webapp/WEB-INF/classes作为单独的源文件夹。


#3 热门回答(10 赞)

尝试这个:

从库选项卡:

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

删除你的Web应用程序库:

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 App库":

Highlighting "Web App Libraries"