2013-07-03 7 views
14

Sto tentando di eseguire test TestNG. L'organizzazione del mio progetto è - src-> test-> java-> comp> shn-> library Il comando seguente funziona bene in Windows ma fallisce in Linux.Classe non trovata eccezione con exec-maven-plugin quando eseguito su Linux

mvn -X clean exec:java -Dexec.mainClass="com.shn.library.RunSuitesInParallel" -Dexec.classpathScope=test -e 

Errore Visto in Linux a correre lo stesso comando -

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:java (default-cli) on project UAF: An exception occured while executing the Java class. com.shn.library.RunSuitesInParallel -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:java (default-cli) on project UAF: An exception occured while executing the Java class. com.shn.library.RunSuitesInParallel 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
     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:601) 
     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: org.apache.maven.plugin.MojoExecutionException: An exception occured while executing the Java class. com.shn.library.RunSuitesInParallel 
     at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:352) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
     ... 19 more 
Caused by: java.lang.ClassNotFoundException: com.shn.library.RunSuitesInParallel 
     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) 
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 
+2

Avere che si esegue ' mvn install' su Linux per creare il barattolo? – kfaerber

+0

Sì, ho provato mvn install – praneel

+0

My Bad, ho eseguito mvn install. Ma poi, il comando eseguito da me era - mvn ** clean ** -X exec: java -Dexec.mainClass = "com.shn.library.RunSuitesInParallel" -Dexec.classpathScope = test -e. Quindi tutte le classi compilate sono state cancellate e quindi l'errore era evidente – praneel

risposta

26

mi sono imbattuto -

mvn clean install. 

Messaggio che quando corro -

mvn -X clean exec:java -Dexec.mainClass="com.shn.library.RunSuitesInParallel" -Dexec.classpathScope=test -e 

Le classi compilate ottenere cancellato & l'errore è evidente.

Quindi la soluzione è -

mvn -X clean install exec:java -Dexec.mainClass="com.shn.library.RunSuitesInParallel" -Dexec.classpathScope=test -e 
3

Anche se la risposta accettata va bene, questo potrebbe anche aiutare qualcuno.

Sembra che sia necessario assicurarsi che si stia creando il Progetto Maven prima di eseguire qualsiasi obiettivo di plugin che si basano sulle classi compilate.

Nel caso in cui si crei una nuova classe java, Per il momento in cui si utilizzerà l'obiettivo del plug-in, viene generato ClassNotFoundException perché non esiste alcuna versione compilata di tale classe (il plug-in si basa sulla versione compilata della classe).

Proprio suppone che si abbia una configurazione di plugin come qui sotto nella tua pom.xml (NOTA: originale domanda SO si parla su come eseguire la classe principale direttamente senza specificare in un pom.xml, e come farlo è spiegato in la risposta accettata dalla praneel),

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2.1</version> 
    <configuration>     
     <mainClass>com.myproj.java.Main</mainClass> 
    </configuration> 
</plugin> 

quindi, prima di eseguire tutti gli obiettivi di plugin, fare

mvn clean install 

poi

mvn exec:java 

o fare,

mvn install exec:java 
1

Molto probabilmente che la risoluzione per ClassNotFoundException quando si utilizza exec-maven-plugin, è quello di change the default classpath scope (src \ Main \ java), al classpath di prova (src \ test \ java).

Può essere passato nel comando mvn (-Dexec.classpathScope = "test"), oppure nel pom.xml:

<classpathScope>test</classpathScope> 

ad esempio:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.6.0</version> 
     <executions> 
      <execution> 
       <phase>test-compile</phase> 
       <goals> 
        <goal>java</goal> 
       </goals> 
       <configuration> 
        <mainClass>your.package.test.class</mainClass> 
        <arguments> 
         ... 
        </arguments> 
        <classpathScope>test</classpathScope> 
       </configuration> 
      </execution> 
     </executions> 
</plugin> 
Problemi correlati