기존에 제대로 컴파일되던 것이 오래조래 쪼물닥거리다가, 이제 컴파일도 되지 않는다.
궁극적인 목적은 리눅스에서 오류가 발생해서 해결하고자 하는 것이다.
코드를 이래저래 수정하다가, 제대로 되던 Local환경인 Windows OS에서 아래의 오류 메시지가 발생했다.
개발도구에서는 1줄짜리의 Warn 메시지를 출력하여, 문맥에 따라 개행을 해 보았다.
결론은 쭉 가다라, ChromeDriver버전과 Chrome Browser버전이 호환이 안된다는 것이다.
( 만약 Chrome Browser가 자동으로 스스로 업데이트하면, 문제를 유발할 수 있다. 제대로 되던 것이 안될 수 있다.)
[2024-11-19 11:06:24.475] [WARN ] [main] org.springframework.web.context.support.GenericWebApplicationContext Exception encountered during context initialization -
cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'webbizApplication':
Unsatisfied dependency expressed through field 'webCrawlExecutor';
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'webCrawlExecutor' defined in file [D:\ProgramLang\cardatabase\target\classes\kr\pe\speech\webbiz\service\WebCrawlExecutor.class]:
Unsatisfied dependency expressed through constructor parameter 0;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'webCrawlService':
Invocation of init method failed;
nested exception is org.openqa.selenium.SessionNotCreatedException:
Could not start a new session.
Response code 500. Message: session not created:
This version of ChromeDriver only supports Chrome version 129
Current browser version is 131.0.6778.70 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe
Host info: host: 'DESKTOP-624R5NN', ip: '192.168.50.50'
Build info: version: '4.10.0', revision: 'c14d967899'
System info: os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.9'
Driver info: org.openqa.selenium.chrome.ChromeDriver
여차저차 결론은 ChromeDriver 4.10.0은 Chrome Brower 129.x.x.x만을 지원한다는 것 같다.
아래는 Dev 서버 환경인 Linux 서버에서의 오류 메시지이다.
[2024-11-19 17:34:54.050] [WARN ] [main] org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext Exception encountered during context initialization -
cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'webbizApplication':
Unsatisfied dependency expressed through field 'webCrawlExecutor';
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'webCrawlExecutor' defined in URL [jar:file:/root/backend/webbiz-0.3.0-SNAPSHOT.jar!/BOOT-INF/classes!/kr/pe/speech/webbiz/service/WebCrawlExecutor.class]:
Unsatisfied dependency expressed through constructor parameter 0;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'webCrawlService':
Invocation of init method failed;
nested exception is org.openqa.selenium.SessionNotCreatedException:
Could not start a new session.
Possible causes are invalid address of the remote server or browser start-up failure.
Host info: host: 'springboot2', ip: '10.0.0.17'
chrome을 설치한다.
google-chrome-stable_current_x86_64.rpm
Error: Package: google-chrome-stable-131.0.6778.69-1.x86_64 (/google-chrome-stable_current_x86_64)
Requires: libc.so.6(GLIBC_2.18)(64bit)
Error: Package: google-chrome-stable-131.0.6778.69-1.x86_64 (/google-chrome-stable_current_x86_64)
Requires: libc.so.6(GLIBC_2.25)(64bit)
You could try using --skip-broken to work around the problem
libc.so.6(GLIBC_2.25) 를 직접 빌드 등을 통해서, 기존의 OS에 업데이트 하는 것은 상당히 위험하니 수행하지 않아야 한다. 심볼릭링크를 치환하거니 LD_LIBRARY_PATH 등을 통해 수행하면 오류가 발생하고, 그 이후부터는 OS의 명령어가 제대로 동작하지 않을 수 있다. 그럼. OS를 재설치하여야 한다.!!!
그래서, 해결책은 최신의 크롬이나 크롬드라이버이므로 OS를 업데이트했다.
그러니 제대로 동작하는 것 같다.
[2024-11-21 11:31:38.641] [INFO ] [main] org.openqa.selenium.remote.service.DriverService Driver logs no longer sent to console by default; https://www.selenium.dev/documentation/webdriver/drivers/service/#setting-log-output
[2024-11-21 11:31:40.167] [WARN ] [main] org.openqa.selenium.devtools.CdpVersionFinder Unable to find CDP implementation matching 131
[2024-11-21 11:31:40.168] [WARN ] [main] org.openqa.selenium.chromium.ChromiumDriver Unable to find version of CDP to use for . You may need to include a dependency on a specific version of the CDP using something similar to `org.seleniumhq.selenium:selenium-devtools-v86:4.10.0` where the version ("v86") matches the version of the chromium-based browser you're using and the version number of the artifact is the same as Selenium's.
다만, JAVA 내의 selenium 종속성의 버전도 업데이트해 줄 필요성도 있어 보인다.