2

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

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

谢谢斯里坎特

4

3 回答 3

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

于 2012-04-16T13:51:19.833 回答
1

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

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

  • 根据异常消息找出缺少的类,
  • 找出 JAR 文件包含或应该包含缺少的类,
  • 找出 maven group/artifact/version 对应于缺少的 JAR,以及
  • 将相应的依赖项添加到项目的 POM 文件中。
于 2012-04-16T11:42:11.823 回答
0

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

于 2012-04-16T11:37:16.807 回答