testNG jar包啟動找不到org.testng.TestNG


主要是因為打包時依賴的jar包沒有打入,網上有很多需要將對應的jar單獨拷貝出來然后通過classpath引用啟動,但是感覺這個就是個無底洞。拷貝了這么多個包最后還是說找不到ObjectId

 

 

 啟動命令是(需要cd到這個文件夾下面)

java -classpath test.jar;testng-6.9.4.jar;jcommander-1.64.jar;extentreports-3.0.3.jar;freemarker-2.3.23.jar org.testng.TestNG system_pro.xml

執行結果:

C:\Users\admin\Desktop\test>java -classpath test.jar;testng-6.9.4.jar;jcommander-1.64.jar;extentreports-3.0.3.jar;freemarker-2.3.23.jar org.testng.TestNG system_pro.xml
[TestNG] Running:
  C:\Users\admin\Desktop\test\system_pro.xml


===============================================
Parallel tests
Total tests run: 1, Failures: 1, Skips: 0
===============================================

Exception in thread "main" java.lang.NoClassDefFoundError: org/bson/types/ObjectId
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
        at java.lang.Class.privateGetPublicMethods(Class.java:2902)
        at java.lang.Class.getMethods(Class.java:1615)
        at freemarker.ext.beans.ClassIntrospector.discoverAccessibleMethods(ClassIntrospector.java:464)
        at freemarker.ext.beans.ClassIntrospector.discoverAccessibleMethods(ClassIntrospector.java:457)
        at freemarker.ext.beans.ClassIntrospector.createClassIntrospectionData(ClassIntrospector.java:268)
        at freemarker.ext.beans.ClassIntrospector.get(ClassIntrospector.java:244)
        at freemarker.ext.beans.BeanModel.<init>(BeanModel.java:114)
        at freemarker.ext.beans.BeanModel.<init>(BeanModel.java:104)
        at freemarker.ext.beans.StringModel.<init>(StringModel.java:52)
        at freemarker.ext.beans.StringModel$1.create(StringModel.java:37)
        at freemarker.ext.beans.BeansModelCache.create(BeansModelCache.java:71)
        at freemarker.ext.util.ModelCache.getInstance(ModelCache.java:84)
        at freemarker.ext.beans.BeansWrapper.wrap(BeansWrapper.java:860)
        at freemarker.template.DefaultObjectWrapper.handleUnknownType(DefaultObjectWrapper.java:235)
        at freemarker.template.DefaultObjectWrapper.wrap(DefaultObjectWrapper.java:214)
        at freemarker.template.WrappingTemplateModel.wrap(WrappingTemplateModel.java:105)
        at freemarker.template.DefaultListAdapter.get(DefaultListAdapter.java:75)
        at freemarker.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:104)
        at freemarker.core.DynamicKeyName._eval(DynamicKeyName.java:69)
        at freemarker.core.Expression.eval(Expression.java:78)
        at freemarker.core.Assignment.accept(Assignment.java:131)
        at freemarker.core.Environment.visit(Environment.java:324)
        at freemarker.core.MixedContent.accept(MixedContent.java:54)
        at freemarker.core.Environment.visitByHiddingParent(Environment.java:345)
        at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48)
        at freemarker.core.Environment.visit(Environment.java:324)
        at freemarker.core.MixedContent.accept(MixedContent.java:54)
        at freemarker.core.Environment.visit(Environment.java:324)
        at freemarker.core.Environment.process(Environment.java:302)
        at freemarker.template.Template.process(Template.java:325)
        at com.aventstack.extentreports.reporter.ExtentHtmlReporter.flush(ExtentHtmlReporter.java:145)
        at java.util.ArrayList.forEach(ArrayList.java:1249)
        at com.aventstack.extentreports.Report.notifyReporters(Report.java:210)
        at com.aventstack.extentreports.Report.flush(Report.java:132)
        at com.aventstack.extentreports.ExtentReports.flush(ExtentReports.java:261)
        at com.genergy.util.ExtentTestNGIReporterListener.generateReport(ExtentTestNGIReporterListener.java:104)
        at org.testng.TestNG.generateReports(TestNG.java:1090)
        at org.testng.TestNG.run(TestNG.java:1049)
        at org.testng.TestNG.privateMain(TestNG.java:1339)
        at org.testng.TestNG.main(TestNG.java:1308)
Caused by: java.lang.ClassNotFoundException: org.bson.types.ObjectId
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 42 more

不知道哪里出了問題。。。。

另一種解決方法:

maven使用打包插件將依賴的jar包一起打包,pom.xml添加插件:

<build>
        <plugins>
            <plugin>
                <!-- 指定項目編譯時的java版本和編碼方式 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <target>1.8</target>
                    <source>1.8</source>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.genergy.Excel2Test</mainClass> <!-- 指定入口類路徑 -->
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef> <!-- jar包后綴,生成的jar包形式為:project-1.0-SNAPSHOT-jar-with-dependencies.jar -->
                    </descriptorRefs>
                </configuration>
                <!-- 添加此項后,可直接使用mvn package | mvn install -->
                <!-- 不添加此項,需直接使用mvn package assembly:single -->
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

通過mvn package 打好包之后,將需要執行

這里需要將測試的xml拷貝到和jar包一個路徑

 

 然后執行

java -classpath jar包名 org.testng.TestNG xml名
如:
java -classpath genergy-api-test-1.0-SNAPSHOT-jar-with-dependencies.jar org.testng.TestNG system_pro.xml

 

最后生成測試報告在:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM