當我嘗試使用chromedriver以下命令運行測驗時出現此錯誤:
org.gradle.api.internal.tasks.testing.TestSuiteExecutionException:無法完成 Gradle 測驗執行器 30 的執行,在 java 的 org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:63)。 [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) at [email protected] .1/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at [email protected]/java.lang.reflect.Method.invoke(Method.java:567) at org.gradle.internal .dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) 在 org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 在 org.gradle.internal.dispatch.ContextClassLoaderDispatch。dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source) at org.gradle .api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) at org. gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) 在 org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) 在 org. gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) 在 org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133) 在 org.gradle.process。內部工人。child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71) 在 app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) 在 app//worker.org.gradle.process。 internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) 原因:org.junit.platform.commons.JUnitException:ID 為“junit-jupiter”的 TestEngine 未能在 org.junit.platform.launcher.core 發現測驗。 EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:111) at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:85) at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java: 92) 在 org.gradle.api.internal.tasks.testing 的 org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)。junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79) at org.gradle.api.internal .tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61) ... 18 更多原因:org. junit.platform.commons.JUnitException:ClassSelector [className = 'com.paulcarron.learningspringboot.learningspringboot.EndToEndTests'] 決議在 org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener 失敗。selectorProcessed(AbortOnFailureLauncherDiscoveryListener.java:39) 在 org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:102) 在 org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.run(EngineDiscoveryRequestResolution. java:82) at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.resolve(EngineDiscoveryRequestResolver.java:113) at org.junit.jupiter.engine.discovery.DiscoverySelectorResolver.resolveSelectors(DiscoverySelectorResolver.java:45) at org .junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:69) at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:103) ... 25 更多原因:java.lang。 NoClassDefFoundError:org/openqa/selenium/WebDriver at java.base/java.lang.Class.getDeclaredMethods0(Native Method) at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3334) at java.base/java.lang .Class.privateGetPublicMethods(Class.java:3359) at java.base/java.lang.Class.getMethods(Class.java:1990) at org.junit.platform.commons.util.ReflectionUtils.getDefaultMethods(ReflectionUtils.java:1481 ) 在 org.junit.platform 的 org.junit.platform.commons.util.ReflectionUtils.findMethod(ReflectionUtils.java:1304) 的 org.junit.platform.commons.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:1454)。 commons.util.ReflectionUtils.isMethodPresent(ReflectionUtils.java:1205) 在 org.junit.jupiter.engine.discovery.predicates.IsTestClassWithTests.hasTestOrTestFactoryOrTestTemplateMethods(IsTestClassWithTests.java:50) 在 org.junit.jupiter.engine.discovery。predicates.IsTestClassWithTests.test(IsTestClassWithTests.java:46) at org.junit.jupiter.engine.discovery.ClassSelectorResolver.resolve(ClassSelectorResolver.java:67) at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.lambda$ resolve$2(EngineDiscoveryRequestResolution.java:134) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.ArrayList$ArrayListSpliterator.tryAdvance(ArrayList.java :1602) 在 java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502) 在 java.base/java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:129) java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488) 在 java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) 在 java.base/java。util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150) 在 java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 在 java.base/java.util.stream.ReferencePipeline。 findFirst(ReferencePipeline.java:647) at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution.java:185) at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolve(EngineDiscoveryRequestResolution. java:125) at org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.resolveCompletely(EngineDiscoveryRequestResolution.java:91) ... 30 更多原因:java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver at java .base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636) 在 java.base/jdk.internal.loader。ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519) ... 54 更多
我部署chromedriver到 ext 檔案夾并為我的瀏覽器提供了正確的版本。什么會導致這個問題?它似乎來自@BeforeClass下面可以看到的:
@BeforeClass
public static void setUp() throws IOException {
System.setProperty("webdriver.chrome.driver", "ext/chromedriver");
service = createDefaultService();
driver = new ChromeDriver(service);
Path testResults = Paths.get("build", "test-results");
if (!Files.exists(testResults)) {
Files.createDirectory(testResults);
}
}
uj5u.com熱心網友回復:
NoClassDefFoundError
NoClassDefFoundError當JVM在運行時無法找到在編譯時可用的特定類時發生。例如,如果我們已經決議了一個類的方法呼叫或訪問了一個類的任何靜態成員,并且該類在運行時不可用,那么JVM將拋出NoClassDefFoundError.
您看到的錯誤是:
java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
這清楚地表明Selenium正在嘗試在運行時決議org/openqa/selenium/WebDriver不再可用的特定類。
解決方案 :
在該System.setProperty()行中,您需要傳遞ChromeDriver的絕對路徑,如下所示:
System.setProperty("webdriver.chrome.driver", "/complete/path/to/chromedriver");
參考
您可以在以下位置找到一些相關的詳細討論:
- 執行緒“主”java.lang.NoClassDefFoundError 中的例外:org/openqa/selenium/WebDriver
- Selenium-TestNG-Maven - 獲取“java.lang.NoClassDefFoundError:org/openqa/selenium/firefox/FirefoxDriver”
- java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableMap 錯誤在 Java 中通過 Selenium 使用 GeckoDriver Firefox
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/408595.html
標籤:
