java.lang.NoClassDefFoundError:在eclipse maven中

java.lang.NoClassDefFoundError:在eclipse maven中,java,eclipse,spring,maven,Java,Eclipse,Spring,Maven,在使用maven的eclipse中,我添加了一个依赖项作为本地jar文件, 就这样: <dependency> <groupId>xyz-core</groupId> <artifactId>xyz-core</artifactId> <version>0</version> <scope>system</scope> <systemPath&

在使用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>

mxICanvas2D
是一个接口。

这很可能是因为您已将作用域设置为
system
。根据报告:

系统

这个范围类似于提供的
,只是您必须提供显式包含它的JAR。工件始终可用,并且不会在存储库中查找

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

使用其他作用域之一,例如
compile

是否已将“Maven依赖项”添加到项目的“Web部署程序集”。如果不是,则添加如下内容:


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

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


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

很少有Eclipse中的Maven不能正确地清理和构建项目。 它对我有效,请遵循以下步骤:
首先用Maven清理您的项目。
在Project Explorer视图中,打开项目>运行>Maven Clean上的上下文菜单
然后重新构建它。

在Project Explorer视图中,打开Project>Run>Maven Build上的上下文菜单

您应该添加一个完整的stacktrace,这也是spring配置的相关部分。在将范围添加为complie Project Build error时,pom.xml中会出现错误:xyz core:xyz core:jar的“dependencies.dependency.systemPath”必须省略。只能为具有系统作用域的依赖项指定此字段。请从依赖项中删除
systemPath
元素,改为在Maven存储库中删除。很好!您可以单击我的答案左上角的复选标记,接受它作为您问题的答案。@PhilipRego它不适合您,因为您显然有不同的问题。这并不意味着我的答案不好,也不适用于一般情况。注意,OP提到它解决了他的问题。。。发布一个新问题并解释你自己的问题。@PhilipRego是的,他做了,请参阅此答案的第三条评论。如果您的
pom.xml
中没有
system
,那么您就不会有同样的问题。
Exception sending context initialized event to listener instance of class
org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: com/mxgraph/canvas/mxICanvas2D