启动Edge浏览器时遭遇java.lang.IllegalAccessError问题求助
Selenium Edge浏览器启动报错解决方案
问题代码
package Selenium; import org.openqa.selenium.WebDriver; import org.openqa.selenium.edge.EdgeDriver; public class www { public static void main(String[] args) { // TODO Auto-generated method stub System.setProperty("webdriver.edge.driver", "C://EdgeDriver.exe"); // Start Edge Session WebDriver driver = new EdgeDriver(); driver.get("https://google.com"); driver.quit(); } }
报错信息
Exception in thread "main" java.lang.IllegalAccessError: class org.openqa.selenium.remote.http.RetryRequest (in module org.seleniumhq.selenium.http) cannot access class dev.failsafe.function.CheckedFunction (in unnamed module @0x667a738) because module org.seleniumhq.selenium.http does not read unnamed module @0x667a738 at org.seleniumhq.selenium.http/org.openqa.selenium.remote.http.RetryRequest.<clinit>(RetryRequest.java:39) at org.seleniumhq.selenium.http/org.openqa.selenium.remote.http.ClientConfig.<clinit>(ClientConfig.java:33) at org.seleniumhq.selenium.edge_driver/org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:56) at org.seleniumhq.selenium.edge_driver/org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:48) at org.seleniumhq.selenium.edge_driver/org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:44) at grdtyd/Selenium.www.main(www.java:14)
解决步骤
- 匹配版本兼容性:确保EdgeDriver版本与本地Edge浏览器版本完全一致,同时使用4.x及以上的Selenium版本保证兼容性。
- 修复模块权限问题:
- 若为模块化Java项目,在
module-info.java中添加requires dev.failsafe;,允许Selenium的http模块访问Failsafe库。 - 非模块化项目,检查Failsafe依赖是否已正确添加到项目classpath,缺失则手动引入。
- 若为模块化Java项目,在
- 更新驱动初始化方式:Selenium 4+推荐使用
EdgeDriverService替代System.setProperty,示例代码:package Selenium; import org.openqa.selenium.WebDriver; import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.edge.EdgeDriverService; import org.openqa.selenium.edge.EdgeOptions; import java.io.File; public class www { public static void main(String[] args) { EdgeDriverService service = new EdgeDriverService.Builder() .usingDriverExecutable(new File("C://EdgeDriver.exe")) .build(); EdgeOptions options = new EdgeOptions(); WebDriver driver = new EdgeDriver(service, options); driver.get("https://google.com"); driver.quit(); } } - 规范依赖管理:如果用Maven或Gradle,确保引入完整的Selenium和Failsafe依赖,Maven示例:
<dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.15.0</version> </dependency> <dependency> <groupId>dev.failsafe</groupId> <artifactId>failsafe</artifactId> <version>3.3.2</version> </dependency> </dependencies> - 清理重建项目:删除项目缓存文件(如Maven的
.m2缓存、IDE的target目录),重新构建项目,避免依赖加载异常。
内容的提问来源于stack exchange,提问作者john lee
相关产品推荐
相关产品推荐

