Skip to main content
 首页 » 编程设计

maven之在 Linux 上运行时,exec-maven-plugin 出现类未找到异常

2024年11月24日28del

我正在尝试运行 TestNG 测试。我的项目组织是-src->test->java->com->shn->library
下面的命令在 Windows 中运行良好,但在 Linux 中失败。

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

在 Linux 中运行相同命令时出现错误 -
[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 

请您参考如下方法:

我跑了——

mvn clean install. 

当我运行时发布 -
mvn -X clean exec:java -Dexec.mainClass="com.shn.library.RunSuitesInParallel" -Dexec.classpathScope=test -e 

已编译的类被删除,错误很明显。

所以解决办法是——
mvn -X clean install exec:java -Dexec.mainClass="com.shn.library.RunSuitesInParallel" -Dexec.classpathScope=test -e