【问题标题】:java.lang.NoClassDefFoundError: in eclipse mavenjava.lang.NoClassDefFoundError:在 Eclipse Maven 中
【发布时间】:2013-09-07 07:07:05
【问题描述】:

在带有 maven 的 Eclipse 中,我添加了一个依赖项作为本地 jar 文件, 像这样:

<dependency>
    <groupId>xyz-core</groupId>
    <artifactId>xyz-core</artifactId>
    <version>0</version>
    <scope>system</scope>
    <systemPath>/home/xyz/xyz-core.jar</systemPath>
</dependency>

在这个 jar 文件中,我有一个在我的应用程序中使用的界面。

当我在 tomcat 服务器上运行我的应用程序时,它显示该接口的异常

Exception sending context initialized event to listener instance of class
org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: com/mxgraph/canvas/mxICanvas2D

mxICanvas2D 是一个接口。

【问题讨论】:

  • 你应该添加一个完整的堆栈跟踪也是你的 spring 配置的相关部分

标签: java eclipse spring maven


【解决方案1】:

这很可能是因为您已将范围设置为system。根据Maven documentation

系统

这个范围类似于provided,除了你必须提供明确包含它的JAR。工件始终可用,不会在存储库中查找。

换句话说,如果您使用system,则在运行应用程序时不会将依赖项放在您的类路径中;你必须自己做。

使用其他范围之一,例如compile

【讨论】:

  • 它会在 pom.xml 中出现错误,同时将范围添加为 complie 项目构建错误:必须省略 xyz-core:xyz-core:jar 的 'dependencies.dependency.systemPath'。只能为具有系统范围的依赖项指定此字段。
  • 从依赖项中删除 systemPath 元素,并改为在您的 Maven 存储库中删除 install the dependency
  • 好!您可以单击我的答案左上角的复选标记以接受它作为您问题的答案。
  • @PhilipRego 它对您不起作用,因为显然您有不同的问题。这并不意味着我的答案很糟糕并且通常不起作用。请注意,OP 提到它解决了他的问题...发布一个新问题并解释您自己的问题。
  • @PhilipRego 是的,他做到了,请参阅此答案的第三条评论。如果您的pom.xml 中没有&lt;scope&gt;system&lt;/scope&gt;,那么您就不会遇到同样的问题。
【解决方案2】:

您是否将“Maven 依赖项”添加到项目的“Web 部署程序集”中。如果没有,添加如下:

右键单击您的项目 -> 属性 -> 部署程序集 -> 添加 -> Java 构建路径条目 -> 下一步,然后您可以从那里添加“maven 依赖项”。然后构建并尝试运行您的应用。

【讨论】:

    【解决方案3】:

    由于您使用的是系统范围,这意味着 maven 将使用它来编译您的项目,您不会看到您的错误,但是,当您在 tomcat 中运行您的应用程序时,这与 maven 无关并且 tomact 不知道在您的依赖项所在的位置,解决它的一种方法是将所需的 .jars 复制到您的 tomcat/lib 文件夹。

    通常您希望提供或编译范围,但是如果您有存储库,则使用这些范围。当您创建一个新的 mavenized 项目然后构建它时,maven 将在您的本地机器(c:/users/user/.m2/repository/)中为该特定依赖项创建一个 .jar。这将适用于您自己的项目。

    【讨论】:

      【解决方案4】:

      Eclipse 中的 Maven 很少能够正确清理和构建项目。 它对我有用,请按照下列步骤操作:
      首先通过 Maven 清理您的项目。
      在 Project Explorer 视图中,打开项目的上下文菜单 > 运行 > Maven Clean
      然后重新构建它。
      在 Project Explorer 视图中,打开项目的上下文菜单 > Run > Maven Build

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-18
        • 1970-01-01
        • 2019-08-05
        • 2015-06-16
        • 2016-08-13
        • 2018-09-11
        • 1970-01-01
        • 2020-01-22
        相关资源
        最近更新 更多