使用maven在java项目中运行时的NoClassDefFoundError

时间:2012-04-16 11:23:58

标签: java maven m2eclipse

我有一个maven java项目(比如X& Y),我已经将Y添加到项目X(pom文件)的依赖项列表中,并将Y导入到X中的类...并且将jar安装到m2 repositorhy和maven build是成功的,在编译时没有错误,但是在运行时它为Y中的类提供了一个NoClassDefFoundError ...这个maven的新手请帮我解决这个问题..

java.lang.NoClassDefFoundError:../ nw_diagnosis / SocketExceptionHandler

由于 SRIKANTH

3 个答案:

答案 0 :(得分:2)

您的X项目是“jar”项目还是“战争”项目?

如果你构建一个jar,你的Y项目(我假设这个是一个jar)不包含在你的X项目的类路径中,这是正常的行为。

如果是这样,你要么必须在类路径中使用Y.jar运行你的X项目,要么将你的X项目构建为“jar-with-dependencies”,见下文:

http://www.springone2gx.com/blog/scott_leberknight/2008/06/creating_executable_jars_using_the_maven_assembly_plugin

答案 1 :(得分:1)

我怀疑这是您的应用程序所依赖的工件中的可选依赖项的问题。

无论如何,解决这个问题的一般方法是:

  • 根据异常消息
  • 找出缺少的类
  • 找出JAR文件包含或应包含缺少的类
  • 弄清楚maven组/工件/版本对应缺少的JAR和
  • 将相应的依赖项添加到项目的POM文件中。

答案 2 :(得分:0)

您是在构建命令行,然后尝试在Eclipse中运行? M2e不喜欢那样。从eclipse中清理并重建所有项目,然后尝试运行。