Java 试图构建Mave(使用M2E)获取classdef错误

Java 试图构建Mave(使用M2E)获取classdef错误,java,maven,Java,Maven,我刚刚开始与maven合作,所以如果这是一个愚蠢或明显的问题,请容忍我 我有一个为我们的一个服务器构建的soap服务器,它需要诸如boneCP、slf4j、connector java之类的东西,所以我将它们添加到POM.xml中,当我运行或调试soap服务器时,它工作得很好。但是,每当我尝试构建它时,我会得到: Exception in thread "main" java.lang.NoClassDefFoundError: com/ning/http/client/AsyncHttpPro

我刚刚开始与maven合作,所以如果这是一个愚蠢或明显的问题,请容忍我

我有一个为我们的一个服务器构建的soap服务器,它需要诸如boneCP、slf4j、connector java之类的东西,所以我将它们添加到POM.xml中,当我运行或调试soap服务器时,它工作得很好。但是,每当我尝试构建它时,我会得到:

Exception in thread "main" java.lang.NoClassDefFoundError: com/ning/http/client/AsyncHttpProvider
at org.sonatype.aether.connector.async.AsyncRepositoryConnectorFactory.newInstance(AsyncRepositoryConnectorFactory.java:106)
at org.sonatype.aether.impl.internal.DefaultRemoteRepositoryManager.getRepositoryConnector(DefaultRemoteRepositoryManager.java:346)
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:453)
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:216)
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:193)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:281)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:186)
at org.sonatype.aether.impl.internal.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:279)
at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:115)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor(DefaultMavenPluginManager.java:142)
at org.apache.maven.plugin.DefaultBuildPluginManager.loadPlugin(DefaultBuildPluginManager.java:59)
at org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolveFromProject(DefaultPluginPrefixResolver.java:139)
at org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolveFromProject(DefaultPluginPrefixResolver.java:122)
at org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolve(DefaultPluginPrefixResolver.java:86)
at org.apache.maven.lifecycle.internal.MojoDescriptorCreator.findPluginForPrefix(MojoDescriptorCreator.java:262)
at org.apache.maven.lifecycle.internal.MojoDescriptorCreator.getMojoDescriptor(MojoDescriptorCreator.java:222)
at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:106)
at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:86)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:98)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: java.lang.ClassNotFoundException: com.ning.http.client.AsyncHttpProvider
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
... 32 more
我在google上搜索过,但在使用maven时似乎找不到与此问题相关的任何内容,只有在手动声明类路径时

我错过什么了吗

抱歉,如果这是一个明显或愚蠢的问题,就像我说的,我只是从maven开始

编辑: 谢谢你的帮助! 我运行命令来检查依赖项并得到

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ auth ---
[INFO] com.v2.auth:auth:jar:0.0.1-SNAPSHOT
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] +- ch.qos.logback:logback-classic:jar:1.0.13:compile
[INFO] |  +- ch.qos.logback:logback-core:jar:1.0.13:compile
[INFO] |  \- org.slf4j:slf4j-api:jar:1.7.5:compile
[INFO] +- com.jolbox:bonecp:jar:0.8.0.RELEASE:compile
[INFO] |  +- com.google.guava:guava:jar:15.0:compile
[INFO] |  \- (org.slf4j:slf4j-api:jar:1.7.2:compile - omitted for conflict with 1.7.5)
[INFO] \- mysql:mysql-connector-java:jar:5.1.6:compi

看来问题出在番石榴和logback上了,它们打得不好?看来我需要找到一种方法把slf4j版本排除在番石榴之外

Maven的一个常见问题是,有时会出现依赖项冲突,特别是从父POM继承依赖项时

父POM可以定义库的一个版本,而您的POM可以定义一个更新的版本。从这里,有两种可能性:

-未找到的类包含在旧版本中,但不包含在新版本中,新版本就是正在使用的版本。事实上,这可以在不存在冲突依赖关系的情况下实现:您可以只包含最新版本而不是旧版本

-未找到的类包含在较新版本中,但依赖关系管理会导致使用旧版本


检查您的,您将发现版本之间是否存在任何冲突。

因此,正如我在上面提到的,问题似乎是guava和logback试图加载两个不同版本的slf4j。所以我想我可以从guava中排除这个版本,它应该可以工作,但是既然guava是bonecp的一个依赖项(我想),我怎么能从包含slf4j中排除它呢?