Spring boot 에서 selenium 라이브러리 디펜던시 Exception
Slack Bot을 만들어 볼까 해서 집에 있는 나스에 spring boot로 올리려고 했다.
그래서 좋은 웹 크롤러 라이브러리가 뭐가 있나 찾아보다가
selenium이라고 아주 깔쌈한 걸 찾아서 사용해보려고 했다가
알 수 없는 예외 때문에 하루를 그냥 날려버렸다.
일단 Gradle dependencies에 추가
일단 selenium을 쓰려면 WebDriver를 사용한다.
WebDriver도 브라우저마다 다양하게 지원된다.
FireFox, Chrome, Opera, IE, Edge, Safari 이렇게 지원해주나?
그 중에서도 나는 Chrome driver를 사용하려고 했다.
http://chromedriver.chromium.org/downloads
여기서 driver를 다운 받는데, 제일 중요한 점!
본인 컴터에 깔린 크롬 버전에 맞게 다운받아야된다.
아니면 java.lang.IllegalAccessError: tried to access class org.openqa.selenium.os.ExecutableFinder 예외를 맞닥뜨리게 된다.
혹은 아래에 나오는 경로를 잘못 잡아줘도 같은 예외를 맞닥뜨린다.
내가 다운로드 한 버전은 74
Driver 객체 생성하기 전에 아래 처럼
다운 받은 chromedriver 경로를 system property에 잡아줘야된다.
여기까지는 금방금방 진행이 되었다.
하지만 아래에 나오는 이 예외 때문에 한참을 아니 하루를 그냥 날렸다...!
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
구글링 하다가 원인을 알아 냈다.
https://stackoverflow.com/questions/45643956/illegalaccesserror-thrown-by-new-chromedriver-on-osx-java
요약하자면, selenium은 guava 버전과 디펜던시가 물려있어서
guava가 없어도 예외가 생기고
guava 버전이 19.0이 아니라도 예외가 발생한다...
그래서 아래처럼 추가... 해결 되었다.
그래서 좋은 웹 크롤러 라이브러리가 뭐가 있나 찾아보다가
selenium이라고 아주 깔쌈한 걸 찾아서 사용해보려고 했다가
알 수 없는 예외 때문에 하루를 그냥 날려버렸다.
일단 Gradle dependencies에 추가
compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.141.59'
일단 selenium을 쓰려면 WebDriver를 사용한다.
WebDriver도 브라우저마다 다양하게 지원된다.
FireFox, Chrome, Opera, IE, Edge, Safari 이렇게 지원해주나?
그 중에서도 나는 Chrome driver를 사용하려고 했다.
http://chromedriver.chromium.org/downloads
여기서 driver를 다운 받는데, 제일 중요한 점!
본인 컴터에 깔린 크롬 버전에 맞게 다운받아야된다.
아니면 java.lang.IllegalAccessError: tried to access class org.openqa.selenium.os.ExecutableFinder 예외를 맞닥뜨리게 된다.
혹은 아래에 나오는 경로를 잘못 잡아줘도 같은 예외를 맞닥뜨린다.
내가 다운로드 한 버전은 74
Driver 객체 생성하기 전에 아래 처럼
다운 받은 chromedriver 경로를 system property에 잡아줘야된다.
여기까지는 금방금방 진행이 되었다.
System.setProperty("webdriver.chrome.driver", "/Users/namdong-gil/Downloads/chromedriver");WebDriver driver = new ChromeDriver();
하지만 아래에 나오는 이 예외 때문에 한참을 아니 하루를 그냥 날렸다...!
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
구글링 하다가 원인을 알아 냈다.
https://stackoverflow.com/questions/45643956/illegalaccesserror-thrown-by-new-chromedriver-on-osx-java
요약하자면, selenium은 guava 버전과 디펜던시가 물려있어서
guava가 없어도 예외가 생기고
guava 버전이 19.0이 아니라도 예외가 발생한다...
그래서 아래처럼 추가... 해결 되었다.
compile group: 'com.google.guava', name: 'guava', version: '19.0'
ChromeDriver 89.0.4389.23 버전에서는 guava 버전을 27.1-jre 로 해야 오류가 나지않습니다.
답글삭제