![](/img/trans.png)
[英]java.lang.NoClassDefFoundError: org/apache/commons/lang/text/StrLookup
[英]java.lang.NoClassDefFoundError: org/apache/commons/exec/Executor
我正在嘗試執行以下代碼,但在運行時出現錯誤“java.lang.NoClassDefFoundError: org/apache/commons/exec/Executor”。 我也添加了“Common-Exec jar”文件,但它不起作用。 我需要添加任何其他 jar 文件嗎??
package cross_browser;
import org.testng.annotations.Test;
import org.testng.annotations.Parameters;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
public class NewTest {
WebDriver driver;
String url;
@BeforeClass
@Parameters({"browser"})
public void beforeTest(String browser) {
url = "https://www.facebook.com";
if (browser.equalsIgnoreCase("chrome"))
{
System.setProperty("webdriver.gecko.driver", "C:\\Users\\Prateek\\Desktop\\Drivers\\geckodriver.exe");
driver = new FirefoxDriver();
}
if (browser.equalsIgnoreCase("firefox"))
{
System.setProperty("webdriver.chrome.driver", "C:\\Users\\Prateek\\Desktop\\Drivers\\chromedriver.exe");
driver = new ChromeDriver();
}
driver.manage().window().maximize();
}
@Test
public void Test() {
driver.get(url);
driver.findElement(By.id("email")).sendKeys("Prateek");
driver.findElement(By.id("password")).sendKeys("Prateek");
driver.findElement(By.id("login")).click();
}
@AfterClass
public void afterTest() {
driver.quit();
}
}
XML文件:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name = "CrossBrowser Testing" parallel = "tests" thread-count ="2">
<test name = "Chrome Testing">
<parameter name ="browser" value = "chrome"></parameter>
<classes>
<class name = "cross_browser.NewTest"></class>
</classes>
</test>
<test name = "firefox Testing">
<parameter name ="browser" value = "firefox"></parameter>
<classes>
<class name = "cross_browser.NewTest"></class>
</classes>
</test>
</suite>
當Java 虛擬機無法在運行時找到在編譯時可用的特定類時,就會發生Java 中的NoClassDefFoundError
。 例如,如果我們已經解決了從一個類的方法調用或訪問任何類的靜態成員,並且該類在運行時不可用,JVM將拋出NoClassDefFoundError錯誤。
您看到的錯誤是:
Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/commons/exec/Executor
這清楚地表明Selenium試圖在運行時從org/apache/commons/exec/Executor
解析一個無法訪問/可用的特定類。
您已經提到添加Common-Exec jar,但似乎相關的類或方法是在Compile Time期間從一個來源解析的,而在Run Time期間不可用。
如果存在通過JDK / Maven / Gradle解析類和方法的多個源,並且在使用新 JAR文件升級時會發生這種情況,則會發生此錯誤。
以下是解決NoClassDefFoundError
的幾個步驟:
<artifactId>selenium-java</artifactId>
或<artifactId>selenium-server</artifactId>
。 避免同時使用兩者。<dependency>
maven clean
、 maven install
和maven test
嘗試添加此依賴項,它對我有用
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-exec</artifactId>
<version>1.3</version>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.