Getting “java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException”Exception

后端 未结 4 2032
梦谈多话
梦谈多话 2021-01-13 12:46

I wanted to invoke testng programmatically. Not eclipse plug-in.

I have associated \"testng-6.8.21.jar\" and running through eclipse and i ran below code:

         


        
相关标签:
4条回答
  • 2021-01-13 13:26

    If you use a Maven project, you need add this dependancy:

    <dependency>
        <groupId>com.beust</groupId>
        <artifactId>jcommander</artifactId>
        <version>1.48</version>
    </dependency>
    

    the class com/beust/jcommander/ParameterException is inside

    If you use a project without Maven you need add this jar file at your classpath:

    jcommander-1.48.jar
    

    You can download this jar file on central.maven.org -> jcommander-1.48.jar

    0 讨论(0)
  • 2021-01-13 13:30

    Change:

    Class cls = Class.forName("TestSuite.TestCases.AddContactHappyPath").getClass();
    test.setTestClasses(new Class[] { cls });
    

    By:

     test.setTestClasses(new Class[] { AddContactHappyPath.class });
    

    All code is

    import org.testng.TestNG;
    import com.xxx.test.others.AddContactHappyPath;
    
    public class SampCls {
        public static void main(String[] args) throws ClassNotFoundException {
            TestNG test = new TestNG();
             test.setTestClasses(new Class[] { AddContactHappyPath.class });
             test.run();
        }
    }
    

    TestNG code is:

    import org.testng.annotations.*;
    
    public class AddContactHappyPath {
    
        @Test()
        public void AddContactHappyPathTest() {
            System.out.println("hello world");
        }
    }
    

    Console result:

    [TestNG] Running:
      Command line suite
    
    hello world
    
    ===============================================
    Command line suite
    Total tests run: 1, Failures: 0, Skips: 0
    ===============================================
    
    0 讨论(0)
  • 2021-01-13 13:39

    Solution for me was to install TestNg. I referred this link here. As I was using latest version of eclipse, Eclipse MarketPlace option didn't work for me, if it works for you then great. Else goto Help -> Install new software and work with http://dl.bintray.com/testng-team/testng-eclipse-release/ After installation refer 1st link I mentioned to continue. All the best !!

    0 讨论(0)
  • 2021-01-13 13:49

    As @sgrillon correctly pointed out, you need the correct Maven dependency, but also the shade plugin (https://maven.apache.org/plugins/maven-shade-plugin) to package a Uber-jar including all Maven dependencies for easy execution. This is what should be included in your pom.xml:

    ...
      <dependencies>
        <dependency>
          <groupId>com.beust</groupId>
          <artifactId>jcommander</artifactId>
          <version>1.48</version>
        </dependency>
      </dependencies>
    ...
        <plugins>
          ...
          <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
              <source>1.8</source>
              <target>1.8</target>
            </configuration>
          </plugin>
    
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <shadedArtifactAttached>true</shadedArtifactAttached>
                  <shadedClassifierName>runnable</shadedClassifierName>
                </configuration>
              </execution>
            </executions>
          </plugin>
    
        </plugins>
    

    After you build the Maven package, you'll get your regular my-app-1.0-SNAPSHOT.jar file and also a my-app-1.0-SNAPSHOT-runnable.jar. This is what you should run, with the command:

    $ java -jar my-app-1.0-SNAPSHOT-runnable.jar
    

    You can verify with this command:

    $ jar tvf my-app-1.0-SNAPSHOT-runnable.jar
    

    that the shaded jar contains the JCommander classes (and those of all the other Maven dependencies), while the regular one doesn't.

    0 讨论(0)
提交回复
热议问题