2014-01-29 2 views
0

저는 Maven을 처음 접했고 이전 질문 (Attempting to build Mave (with M2E) getting classdef error)에 대한 후속 조치입니다. 저에게 응답 한 신사가 종속성을 확인하라고 말했고 분명히 충돌이 하나 있음을 확인했습니다. . 그래서 SLF4J 1.7.5를 logback에서 제외하고 guava의 1.7.2 버전을 사용하는 방법을 알아 냈습니다. (의존성의 의존성을 배제하는 방법을 알지 못했기 때문에 ...) 나는 여전히 같은 오류가 나는 예전 아직 내가 종속성 명령을 실행할 때 다시 오류가있을 것 같지 않습니다m2e를 사용하여 maven 빌드를 실행할 때 noclassdeffound 오류가 발생합니다.

[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] +- 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 
[INFO] \- mysql:mysql-connector-java:jar:5.1.6:compile 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.346s 
[INFO] Finished at: Wed Jan 29 15:53:43 EST 2014 
[INFO] Final Memory: 12M/149M 

참조를 위해 내가지고있어 오류는 다음과 같습니다

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을 사용하기 시작한 후에 만 ​​발생하기 시작했다. 나는 그리워 해? 이 문제를 방지하려면 무엇을 포함해야합니까?

사이드 노트 : 올바른 폴더에서 명령 행을 통해 mvn 컴파일을 실행하면 프로젝트가 빌드됩니다. 물론 이전에 사용 된 정확한 코드와 동일한 경우에도 인증서 실행 문제가 있다고 주장합니다 나는 완벽하게 정상적으로 작동하는 maven으로 전환했다. 또한

여기에 필요한이 프로젝트에 대한 내 POM의 경우 :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.v2.auth</groupId> 
    <artifactId>auth</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>auth</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>1.0.13</version> 
     <exclusions> 
     <exclusion> <!-- declare the exclusion here --> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>com.jolbox</groupId> 
     <artifactId>bonecp</artifactId> 
     <version>0.8.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.6</version> 
    </dependency> 
    </dependencies> 

    <build> 
    <plugins> 
    <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
      <archive> 
       <manifest> 
       <mainClass>com.v2.auth.App</mainClass> 
       </manifest> 
      </archive> 
      <descriptorRefs> 
       <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
      </configuration> 
      <executions> 
      <execution> 
       <id>make-assembly</id> <!-- this is used for inheritance merges --> 
       <phase>package</phase> <!-- bind to the packaging phase --> 
       <goals> 
       <goal>single</goal> 
       </goals> 
      </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.0</version> 
      <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
      </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

이 그냥 바보 같은 명백한 질문 인 경우 미안하지만 난 내 자신이 알아 내려고 내 순발력 끝에 해요 .

+0

시도 \t 추가 com.ning \t 비동기 HTTP 클라이언트 \t 1.6.1

답변

1

이것은 코드 또는 해당 종속성과 아무 관련이 없습니다. 게시 된 stacktrace를 보면 m2e 기능, 특히 Sonatype의 "async-http-client"플러그인에 문제가 있음이 분명합니다. Eclipse에서 m2e를 다시 설치하십시오. 다음 스크린 샷은 내 일식에서 m2e의 플러그인을 보여줍니다. 목록에있는 첫 번째 항목을 확인하십시오.

enter image description here

+0

완벽한 당신을 감사합니다! 그게 전부라고 나는 믿을 수 없다. – Kynian

관련 문제