【问题标题】:Spring tutorial noClassDefFoundError春季教程 noClassDefFoundError
【发布时间】:2014-05-13 08:37:21
【问题描述】:

我正在关注位于 here 的 Spring 教程(链接指向第 1 章,但我目前正在阅读第 2 章,第 2.2 部分)。我在大学里有大约 2 年的 Java 经验,但我以前从未用过 Spring,这就是为什么我认为分步教程会有所帮助。

问题是,教程提供了一个链接来下载所有必要的 jar 文件,但该链接现在指向 spring projects page。那里的“Spring Framework”链接似乎要求您从 GitHub 下载它,我这样做了,但此下载中似乎没有任何 jar 文件。所以每当教程说要使用某个 jar 文件时,我就用谷歌搜索它并在其他地方找到它,一切似乎都运行良好。

所以问题出在这里:在第 2.2 步“改进控制器”中,我已按照说明进行操作,并进入了显示

的部分

“我们重新运行我们的‘测试’目标并且测试通过了”

但正如您可能已经猜到的那样,它对我不起作用,出现以下错误:

[junit] ------------- Standard Error -----------------
[junit] May 13, 2014 8:40:40 AM springapp.web.HelloController handleRequest
[junit] INFO: Returning hello view with Tue May 13 08:40:40 BST 2014
[junit] ------------- ---------------- ---------------
[junit] Testcase: testHandleRequestView(springapp.web.HelloControllerTests):
    Caused an ERROR
[junit] org/springframework/ui/ModelMap
[junit] java.lang.NoClassDefFoundError: org/springframework/ui/ModelMap
[junit]     at org.springframework.web.servlet.ModelAndView.getModelMap(Mode
lAndView.java:205)
[junit]     at org.springframework.web.servlet.ModelAndView.addObject(ModelA
ndView.java:227)
[junit]     at org.springframework.web.servlet.ModelAndView.<init>(ModelAndV
iew.java:127)
[junit]     at springapp.web.HelloController.handleRequest(HelloController.j
ava:26)
[junit]     at springapp.web.HelloControllerTests.testHandleRequestView(Hell
oControllerTests.java:13)
[junit] Caused by: java.lang.ClassNotFoundException: org.springframework.ui.
ModelMap
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
[junit]
[junit]
[junit] Test springapp.web.HelloControllerTests FAILED
BUILD FAILED

我在 Google 上搜索过 NoClassDefFoundError,其中一个原因似乎是缺少 jar 文件。我认为这里就是这种情况,因为我都是通过 Google 找到的。

所以我的问题是,我是否正确假设这是问题所在,如果是这样,有人知道我缺少什么 jar 文件以及在哪里可以找到它吗?或者有没有人之前完成过这个教程并且可以给我提供这些罐子?

提前致谢!

编辑:这些是我目前在 war/WEB-INF/lib 中的 jar,它们都已添加到构建路径中:

commons-logging-1.1.3.jar  
servlet-api.jar  
junit-4.11.jar  
jstl.jar  
standard.jar  
spring-webmvc.jar  
spring.jar

【问题讨论】:

  • 您所遵循的教程已经很老了!!!我建议你在这里查看教程spring.io/guides
  • 是的,它很老了,但它是我找到的第一个标题中带有“逐步”的,所以我认为它会很完美。直到第2章我才意识到它有多大!无论如何,我会查看您链接到的教程,希望它们会更有用。
  • 这是个好主意。如果您有任何问题,SO 随时为您提供帮助:)
  • 回应 Imran:1)我在 Web-Inf\lib 文件夹中有罐子,我已经用那里的所有罐子编辑了我的问题 2)我不确定你的意思“部署程序集”,您的意思是添加到构建路径吗?您链接到的问题的答案表明 jar 文件中的重复类之间可能存在冲突,因此我删除了 spring-webmvc.jar 并在 eclipse 中遇到了一些错误,而 spring.jar 给了我相同的 NoClassDefFoundError 错误.另外,我没有使用 maven,因为教程根本没有提到它
  • 您可能应该在具体答案中添加评论:)

标签: spring noclassdeffounderror


【解决方案1】:

在动态网络项目中,您需要确保关于此java.lang.NoClassDefFoundError: 错误的两件事

  1. 将所有需要的 Jar 放在 Web-Inf\lib 文件夹中
  2. 在部署程序集中添加这些 jar 引用。

现在您缺少 Spring 在运行时所需的 Jar。请在此处查看详细信息

java.lang.ClassNotFoundException: org.springframework.ui.ModelMap

如果您使用的是maven等,可能还有其他原因。

此错误org/springframework/ui/ModelMap 表示服务器在加载时未找到该类..它不是编译问题,实际上是运行时问题..

【讨论】:

  • 1) 我在 Web-Inf\lib 文件夹中有罐子,我已经用那里的所有罐子编辑了我的问题 2) 我不确定您所说的“部署程序集”是什么意思,你的意思是添加到构建路径?您链接到的问题的答案表明 jar 文件中的重复类之间可能存在冲突,因此我删除了 spring-webmvc.jar 并在 eclipse 中遇到了一些错误,而 spring.jar 给了我相同的 NoClassDefFoundError 错误.另外,我没有使用 maven,因为教程根本没有提到它
  • 在eclipse中右击项目属性,得到“Deployment Assembly”选项卡
  • 我右键单击并转到属性,但“部署程序集”不存在
  • 我已经添加了截图请看.. 也看..stackoverflow.com/questions/2753464/…
  • 这是我在属性中看到的:s14.postimg.org/v5j5ohuch/properties.png
猜你喜欢
  • 2015-02-24
  • 1970-01-01
  • 2015-08-26
  • 2020-12-18
  • 1970-01-01
  • 2011-01-02
  • 2018-07-19
  • 2017-10-06
  • 2015-12-23
相关资源
最近更新 更多