java.lang.IllegalAccessError:尝试访问方法com.google.common.util.concurrent.SimpleTimeLimiter。使用Selenium-Java 3.5.1或更高版本时

时间:2018-01-25 20:03:22

标签: java maven selenium selenium-webdriver webdriver

我想知道是否有人可以告诉我为什么在使用Selenium-Java 3.5.1或更高版本时出现以下错误 -

java.lang.IllegalAccessError: tried to access method com.google.common.util.concurrent.SimpleTimeLimiter.<init>(Ljava/util/concurrent/ExecutorService;)V from class org.openqa.selenium.net.UrlChecker

3 个答案:

答案 0 :(得分:4)

此错误消息......

java.lang.IllegalAccessError: tried to access method com.google.common.util.concurrent.SimpleTimeLimiter.<init>(Ljava/util/concurrent/ExecutorService;)V from class org.openqa.selenium.net.UrlChecker

...暗示 WebDriver 变体版本(即 GeckoDriver / ChromeDriver )与版本之间存在不匹配您正在使用的相应 WebBrowser 变体(即 Firefox / Chrome )。

  

注意:您需要确保使用最新的JDK版本。

GeckoDriver-硒火狐

如果您使用 GeckoDriver - Selenium - Firefox 组合,则需要遵循以下兼容性图表:

supported_platforms_geckodriver_24

ChromeDriver铬

如果您使用 ChromeDriver - Chrome 组合,则需要确保二进制文件符合以下条目:

  • ChromeDriver v2.46:支持Chrome v71-73
  • ChromeDriver v2.45:支持Chrome v70-72
  • ChromeDriver v2.44:支持Chrome v69-71(与ChromeDriver 2.43相同,但还有其他错误修复)
  • ChromeDriver v2.43:支持Chrome v69-71
  • ChromeDriver v2.42:支持Chrome v68-70
  • ChromeDriver v2.41:支持Chrome v67-69
  • ChromeDriver v2.40:支持Chrome v66-68
  • ChromeDriver v2.39:支持Chrome v66-68
  • ChromeDriver v2.38:支持Chrome v65-67
  • ChromeDriver v2.37:支持Chrome v64-66
  • ChromeDriver v2.36:支持Chrome v63-65
  • ChromeDriver v2.35:支持Chrome v62-64
  • ChromeDriver v2.34:支持Chrome v61-63
  • ChromeDriver v2.33:支持Chrome v60-62
  • ChromeDriver v2.32:支持Chrome v59-61
  • ChromeDriver v2.31:支持Chrome v58-60
  • ChromeDriver v2.30:支持Chrome v58-60
  • ChromeDriver v2.29:支持Chrome v56-58
  • ChromeDriver v2.28:支持Chrome v55-57
  • ChromeDriver v2.27:支持Chrome v54-56
  

注意:几个月前, Chromium团队提出preliminary announcement ChromeDriver的版本控制模型将会发生变化。现在 Chromium团队正在推进该计划。具体来说,ChromeDriver 2.46将是最新版本的主要版本2.未来的ChromeDriver版本将带有类似于Chrome版本的版本号。我们将在下周发布ChromeDriver 73之前,在Chrome 73发布测试版之前。

以下是新版本模型的工作原理:

  • ChromeDriver将使用与Chrome相同的版本号方案。有关详细信息,请参阅https://www.chromium.org/developers/version-numbers
  • ChromeDriver的每个版本都支持Chrome,其中包含主要版本,次要版本和版本号。例如,即将推出的ChromeDriver 73.0.3683。*将支持所有以73.0.3683开头的Chrome版本。
  • 在Chrome的新主要版本进入Beta之前,将发布匹配版ChromeDriver。例如,新版本的ChromeDriver将于下周发布,以匹配Chrome m73的Beta版本。
  • 首次发布新主要版本后,我们将根据需要发布补丁。这些补丁可能与Chrome的更新一致,也可能不一致。

此外,当 Selenum网格节点似乎已成功注册到 Selenum Grid Hub 时,也会发现此错误com.google.common.util.concurrent.SimpleTimeLimiter,并且网格控制台,但在请求会话时,观察到以下错误:

org.openqa.selenium.WebDriverException: com.google.common.util.concurrent.SimpleTimeLimiter.create(Ljava/util/concurrent/ExecutorService;)Lcom/google/common/util/concurrent/SimpleTimeLimiter;

Selenium-Grid-Extras Hub (1.12.16)发生此错误,因为打包到JAR中的selenium和guava依赖项之间的不一致

此问题已通过合并#367解决,使用 Selenium v​​3.8.1 将解决您的问题。

确保两点为:

  • Selenium Grid Extras版本大于(或等于)1.12.17
  • guava依赖项已更新。

答案 1 :(得分:2)

在我先前的pom.xml中,这是条目:

<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.53.0</version>
</dependency>

以下错误被抛出,

  

错误:java.lang.IllegalAccessError:尝试访问方法   com.google.common.util.concurrent.SimpleTimeLimiter。(Ljava / util / concurrent / ExecutorService;)V   从类org.openqa.selenium.net.UrlChecker

然后我用最新版本更新了POM:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.14.0</version>
</dependency>

我再也没有看到错误。希望这会有所帮助。

答案 2 :(得分:1)

签入POM.XML文件,将具有2个“ selenium-chrome-driver”依赖项。 因此,那里的依赖关系以及需要采取的例外情况都会给您带来困惑。更改后,我的一个正在工作。