2013-06-07 4 views
10

안녕하세요 저는 Jersey 2.0의 Getting Started guide을 따르려고합니다.Jersey 2.0 "시작하기"안내서, mainClass가 없습니다.

나는 1.1과 1.2 단계를 그대로 수행했다. 문제 없습니다.

1.3 단계에서 maven이 javax-annotation 1.2를 찾지 못해서 문제가 발생했지만 조언을 따라 해결했습니다. of another Stackoverflow user 그리고 내 pom에 저장소를 추가했습니다.

그래서 mvn clean test는 아무런 문제없이 통과하지만 mvn clean exec:java를 실행하려고하면 나는 pom.xml 파일은 다음 명령에 의해 생성 된 하나 다시

[WARNING] java.lang.ClassNotFoundException: com.example.Main 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:285) 
at java.lang.Thread.run(Thread.java:722) 

수 :

mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 \ 
-DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \ 
-DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example \ 
-DarchetypeVersion=2.0 

<repositories> 
    <repository> 
    <id>java.net.repo</id> 
    <url>https://maven.java.net/content/groups/promoted/</url> 
    <layout>default</layout> 
    </repository> 
</repositories> 

: 내가 만든했습니다 '만 추가는 다음과 같다 경우 이것이 내가 당신의 오류를 재현 할 수 있어요 mvn -version

Apache Maven 3.0.4 (r1232337; 2012-01-17 10:44:56+0200) 
Maven home: /usr/share/maven 
Java version: 1.7.0_21, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/jre 
Default locale: el_GR, platform encoding: UTF-8 
OS name: "mac os x", version: "10.8.3", arch: "x86_64", family: "mac" 
+1

는'Main'라는 클래스가 있습니까? –

+0

yeap, src/main/java/com/example에서 maven이 기본적으로 만듭니다. 실제로 Main.java와 MyResource.java라는 두 클래스가 자동으로 생성됩니다 (사용자 가이드에 설명되어 있습니다) – user2465039

답변

20

의 출력 관심이다. 이것은 저지와 아무 관련이 없습니다. Maven과 함께하는 것은 오류입니다. mvn clean exec:java는 "모든 .class 파일을 삭제 한 다음 Main .class 파일을 실행하려고합니다"라고 말합니다. 당신이 그것을 삭제했기 때문에 Maven은 그것을 찾을 수 없습니다. 해결책은 다음과 같습니다.

mvn clean compile exec:java 

이렇게하면 문제가 해결됩니다. ".class 파일을 모두 지우고 소스에서 다시 컴파일 한 다음 Main .class 파일을 실행하려고합니다."

다음 오류가 발생하면 <scope>test</scope> 라인을 클라이언트 의존성에서 삭제하십시오. pom.xml 파일 :

<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-client</artifactId> 
    <scope>test</scope> 
</dependency> 

사람 :

<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-client</artifactId> 
</dependency> 
+1

고마워요. 나는 Maven에 대해서 모른다. 그러나 나는 exec : java가 컴파일에 의존 할 것이라고 생각했다. 그러나 어떤 경우에도 pom.xml에서 범위를 제거하더라도 java.lang.NoClassDefFoundError : org/glassfish/jersey/client/ClientConfig의 묶음을 얻게됩니다. 나는 저지의 시작 가이드가 시작을위한 것이 아니라고 생각한다 :-) – user2465039

+0

@ user2465039 나의 대답의 맨 아래를 읽으십시오. 그것을 수정하는 방법을 보여줍니다. –

+0

감사! 잘못된 범위를 제거했습니다 :-) 누군가 가이드를 업데이트해야합니다. 나는 당신을 위해 투표 하겠지만 아직 여기에 충분한 점수가 없습니다 :-) – user2465039