2014-12-09 2 views
0

저는 Maven에서 새로운데 최근에 다중 값 맵을 필요로하는이 프로그램을 만들었습니다. jsr311-api.jar가 없으므로 온라인에서 다운로드했지만 어디로 가져갈 지 알 수 없습니다. apache-maven/lib 폴더에 업로드하고 프로그램을 실행하려고했지만 작동하지 않았습니다. 이것은 내가받는 오류입니다.Maven에 대한 java.lang.noclassdeffounderror

Exception in thread "main" java.lang.NoClassDefFoundError: javax/ws/rs/core/Mul 
ivaluedMap 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
    at java.lang.Class.privateGetMethodRecursive(Unknown Source) 
    at java.lang.Class.getMethod0(Unknown Source) 
    at java.lang.Class.getMethod(Unknown Source) 
    at sun.launcher.LauncherHelper.validateMainClass(Unknown Source) 
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.core.MultivaluedMap 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 7 more 

.jar 파일의 위치를 ​​잘못 지정했다고 가정했습니다. 당신의 도움에 미리 감사드립니다.

이것은 내가 현재 가지고 나의 치어 파일입니다 http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0

<groupId>com.test.api</groupId> 
<artifactId>testing</artifactId> 
<packaging>jar</packaging> 
<version>0.1.0</version> 
<name>testPlatform</name> 

<properties> 
    <source.version>1.7</source.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<build> 
    <plugins> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 

    </plugins> 
</build> 

<dependencies> 
    <dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>3.8.1</version> 
    <scope>test</scope> 
</dependency> 
    <!-- REST client --> 
    <dependency> 
     <groupId>org.glassfish.jersey.core</groupId> 
     <artifactId>jersey-client</artifactId> 
     <version>2.9.1</version> 
    </dependency> 

    <dependency> 
<groupId>javax.ws.rs</groupId> 
<artifactId>jsr311-api</artifactId> 
<version>0.11</version> 
</dependency> 

    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>2.3</version> 
    </dependency> 

    <!-- for deserialization --> 
    <dependency> 
     <groupId>com.google.code.gson</groupId> 
     <artifactId>gson</artifactId> 
     <version>2.2.4</version> 
    </dependency> 



</dependencies> 

+0

pom에 의존성을 추가하십시오. – bmargulies

+0

이미 pom 파일에 있습니다. – Kito

+0

코드를 어떻게 실행하고 있습니까? 의존성을 실행할 때 포함시키지 않은 것처럼 보입니다. – bmargulies

답변

0

나는 그런. 당신은 당신의 코드를 컴파일하고 jar 파일을 만들기 위해 메이븐을 사용하는

.

를 내가 여기에 문제를 알고 상당히 확신 당신은 실행하려고 외부 자바 커널 커맨드 라인을 가진 jar 파일.

Maven이 코드를 컴파일하기 위해 Java를 호출하면 모든 종속성이 classpath에 추가됩니다.

코드를 실행하면 그렇지 않습니다.

모든 의존성의 경로 이름을 가진 텍스트 파일을 작성하도록 maven-dependency-plugin을 구성한 다음이를 사용하여 명령 줄을 빌드 할 수 있습니다. 또는 maven-surefire-plugin을 사용하여 테스트를 실행하거나 exec-maven-plugin을 사용하여 클래스를 시작하거나 appassembler 플러그인을 사용하여 종속성 및 명령 행 래퍼가있는 패키지를 빌드하거나

의존성 플러그인이 클래스 경로를 작성하는 방법은 다음과 같습니다.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>build-classpath</id> 
     <phase>generate-sources</phase> 
     <goals> 
      <goal>build-classpath</goal> 
     </goals> 
     <configuration> 
     <outputFile>${project.build.directory}/classpath.txt</outputFile> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
+0

필자는 Maven 의존성 플러그인을 구성하기 위해해야 ​​할 일을 잘 설명하지 않습니다. – Kito

+0

정말 고마워요! 나는 그것을 실행할 수 있었다! 그러나 나는이 프로그램을 실행할 때마다 수업 진행에 넣어야합니까? 이것에 접근하는 더 좋은 방법이 있습니까? – Kito

+0

http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/ – bmargulies

-1

클래스 경로에 javax.ws.rs.jar 파일을 포함하지 않은 것으로 보입니다.

Download Link