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



我有一个maven java项目(比如X和Y),我已经将Y添加到项目X的依赖关系列表中(pom文件),并将Y导入到X中的类中......jars安装到M2 repositorhy和maven构建是成功的,编译时没有错误,但在运行时它正在为Y中的类发送NoClassDefFoundError......我是这个maven的新手,请帮助我解决问题。

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

谢谢斯里坎特

你的 X 项目是一个"jar"项目,还是一个"战争"项目?

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

如果是这样,要么必须在类路径中使用 Y.jar 运行 X 项目,要么将 X 项目构建为"带有依赖项的 jar",请参见下文:

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

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

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

  • 根据异常消息找出缺少的类,
  • 找出哪些JAR文件包含或应该包含缺少的类,
  • 找出 maven 组/工件/版本对应于缺少的 JAR 的内容,以及
  • 将相应的依赖项添加到项目的 POM 文件中。

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

最新更新