java.lang.NoClassDefFoundError但.class文件已经存在

时间:2016-08-24 19:55:37

标签: java spring maven tomcat noclassdeffounderror

我正在使用Maven和Tomcat进行Web开发。我收到以下错误消息:

  

错误消息:“java.lang.NoClassDefFoundError:/ api / core / dto / IDTO”。

但是,IDTO.class已存在于文件夹中:

/api/core/dto/IDTO.class

我检查了几个关于NoClassDefFoundError的答案,他们都说运行时错误PATH。出了什么问题?为什么我得到了例外?

1 个答案:

答案 0 :(得分:0)

该点是拍摄该图像的目录。它应该是:

  • 如果您的应用程序部署为/ opt / tomcat / apps / yourapp中的开放目录,则应位于/ opt / tomcat / apps / yourapp / WEB-INF / classes / api / core / dto / IDTO中的.class
  • 如果您的应用程序使用maven作为.war文件打包,则类文件应位于.war内的类似位置:WEB-INF / classes / api / core / dto / IDTO.class
  • 如果您的类包含在依赖项中,例如mylibrary.jar文件,则应确保jar在WEB-INF / lib / mylibrary.jar中的war内打包。在jar文件中,类应该在一个等于其完全限定名的路径中找到:api / core / dto / IDTO.class

如果.jar不在.war文件中,则应检查pom.xml以查找依赖项,并确保依赖项中没有<scope>元素。错误的范围,例如'提供',将使得罐子不被包装在战争中。