2013-06-07 17 views
10

Ciao Sto cercando di seguire lo Getting Started guide per Jersey 2.0.Guida "Getting Started" Jersey 2.0, mainClass non trovata

Ho eseguito i passaggi 1.1 e 1.2 così come sono. Nessun problema lì.

Per il passaggio 1.3 ho avuto un problema perché Maven non ha trovato la javax-annotation 1.2 ma l'ho risolto seguendo il consiglio of another Stackoverflow user e aggiunto un repository al mio pom.

Così mvn clean test passa senza problemi, ma quando provo a fare funzionare mvn clean exec:java torno

[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) 

Il pom.xml è quello creato con il seguente comando:

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 

dove la l'unica aggiunta che ho creato è la seguente:

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

Nel caso in cui è di interesse questo è l'uscita di 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

avete una classe denominata 'Main'? –

+0

yeap, creato di default da maven sotto src/main/java/com/example. Di fatto ci sono due classi create automaticamente Main.java e MyResource.java (descritte nella guida utente) – user2465039

risposta

20

sono in grado di riprodurre l'errore. Questo non ha nulla a che fare con Jersey; è un errore che stai facendo con Maven. mvn clean exec:java dice: "elimina tutti i file .class e poi prova a eseguire il file .lass Main". Dal momento che l'hai cancellato, Maven non riesce a trovarlo. Ecco una soluzione:

mvn clean compile exec:java 

Questo dovrebbe risolvere il problema nella tua domanda. Questo dice "eliminare tutti i file .class, recompilarli dalla fonte e quindi provare a eseguire il file Main .class"

per superare il prossimo errore si vedrà, eliminare la riga <scope>test</scope> dalla dipendenza cliente nel pom.xml:

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

a:

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

Grazie. Non so di Maven, ma ho pensato che exec: java dipendesse dalla compilazione. In ogni caso, tuttavia, anche con la rimozione dell'ambito da pom.xml, ora ho un po 'di java.lang.NoClassDefFoundError: org/glassfish/jersey/client/ClientConfig. Penso che la guida introduttiva della maglia non sia per i principianti :-) – user2465039

+0

@ user2465039 leggi la parte inferiore della mia risposta. Mostra come risolvere il problema. –

+0

Grazie! Avevo rimosso il campo di applicazione sbagliato :-) Qualcuno ha bisogno di aggiornare la guida però. Voterò per te ma non ho ancora abbastanza punti qui :-) – user2465039

Problemi correlati