【问题标题】:org.testng.TestNGException: An error occurred while instantiating classorg.testng.TestNGException:实例化类时发生错误
【发布时间】:2019-09-16 13:09:12
【问题描述】:

我使用 TestNG 的 selenium 自动化框架在 Windows 7 上运行良好,但是当我在 Windows 10 上配置相同的框架时,我遇到了以下问题。 你能帮我做同样的事情吗?

测试详情:

操作系统: windows 10 64 位

Eclipse 版本: 版本:2019-03 (4.11.0)

TestNG 版本: 6.14.3

[RemoteTestNG] 检测到 TestNG 版本 6.14.3 org.testng.TestNGException:实例化时发生错误 com.saf.aw_nxt_end_to_end_tests.AW_NXT_Login 类: org/w3c/dom/ElementTraversal 在 org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:435) 在 org.testng.internal.ClassHelper.createInstance(ClassHelper.java:336) 在 org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:125) 在 org.testng.internal.ClassImpl.getInstances(ClassImpl.java:190) 在 org.testng.internal.TestNGClassFinder.processFactory(TestNGClassFinder.java:203) 在 org.testng.internal.TestNGClassFinder.processMethod(TestNGClassFinder.java:179) 在 org.testng.internal.TestNGClassFinder.processClass(TestNGClassFinder.java:171) 在 org.testng.internal.TestNGClassFinder.(TestNGClassFinder.java:121) 在 org.testng.TestRunner.initMethods(TestRunner.java:370) 在 org.testng.TestRunner.init(TestRunner.java:271) 在 org.testng.TestRunner.init(TestRunner.java:241) 在 org.testng.TestRunner.(TestRunner.java:192) 在 org.testng.remote.support.RemoteTestNG6_12$1.newTestRunner(RemoteTestNG6_12.java:33) 在 org.testng.remote.support.RemoteTestNG6_12$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG6_12.java:66) 在 org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:713) 在 org.testng.SuiteRunner.init(SuiteRunner.java:260) 在 org.testng.SuiteRunner.(SuiteRunner.java:198) 在 org.testng.TestNG.createSuiteRunner(TestNG.java:1295) 在 org.testng.TestNG.createSuiteRunners(TestNG.java:1273) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:1128) 在 org.testng.TestNG.runSuites(TestNG.java:1049) 在 org.testng.TestNG.run(TestNG.java:1017) 在 org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115) 在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77) 引起 作者:java.lang.NoClassDefFoundError:org/w3c/dom/ElementTraversal at java.lang.ClassLoader.defineClass1(本机方法)在 java.lang.ClassLoader.defineClass(ClassLoader.java:763) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:468) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:74) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:369) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:363) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:362) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在 org.apache.xerces.parsers.AbstractDOMParser.startDocument(未知 来源)在 org.apache.xerces.impl.dtd.XMLDTDValidator.startDocument(未知 来源)在 org.apache.xerces.impl.XMLDocumentScannerImpl.startEntity(未知 来源)在 org.apache.xerces.impl.XMLVersionDetector.startDocumentParsing(未知 来源)在 org.apache.xerces.parsers.XML11Configuration.parse(未知 来源)在 org.apache.xerces.parsers.XML11Configuration.parse(未知 来源)在 org.apache.xerces.parsers.XMLParser.parse(未知来源) 在 org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 在 org.apache.xerces.jaxp.DocumentBuilderImpl.parse(未知来源)在 javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:205) 在 org.apache.log4j.xml.DOMConfigurator$1.parse(DOMConfigurator.java:749) 在 org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:871) 在 org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:755) 在 org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.java:896) 在 com.saf.utilities.Log.getInstance(Log.java:19) 在 com.saf.base.BaseTest.(BaseTest.java:138) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:24) 在 org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:423) ... 24 更多原因:java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal 在 java.net.URLClassLoader.findClass(URLClassLoader.java:382) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 58 更多 捡起 JAVA_TOOL_OPTIONS: -agentlib:jvmhook 捡起 _JAVA_OPTIONS: -Xrunjvmhook -Xbootclasspath/a:"C:\Program Files (x86)\HP\Unified Functional 测试\bin\java_shared\classes";"C:\Program Files (x86)\HP\Unified 功能测试\bin\java_shared\classes\jasmine.jar"

【问题讨论】:

  • 你在用maven吗?还是手动复制罐子?

标签: java maven selenium testng


【解决方案1】:

您似乎收到了java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal 错误。

来自Another Answer:
出现此错误的原因是 1.4.01 版本的 xml-apis 库,包含所需的 ElementTraversal 类。 2.0.0、1.0.0等其他版本不包含,编译时应用程序失败。

  • MAVEN 解决方案:

在 pom.xml 中,将“xml-apis”依赖设置为 1.4.01 版本:

<dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>
</dependency>
  • 其他人的解决方案:

如果不使用maven,可以手动添加xml-apis库,版本1.4.01。您将在 xml-commons 二进制包中找到名为“XML Commons External 1.4.01”的 jar,您可以在此处下载:http://xerces.apache.org/mirrors.cgi

最后,使用这个版本的库编译并执行你的 java 应用程序/项目。

【讨论】:

  • 添加上述的maven依赖后。我能够成功运行该框架。 @S ahmed 感谢您的回答:)
猜你喜欢
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多