2013-06-07 3 views
10

こんにちは、私はJersey 2.0のGetting Started guideに従っています。Jersey 2.0「Getting Started」ガイド、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の2つのクラスが自動的に作成されます(ユーザーガイドに記載されています) – 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

関連する問題