CS-Kun 2023-07-20 14:52 采纳率: 0%
浏览 11

Linux上Chrome Driver项目运行报错,如何解决?

我想用Chrome Driver控制打开浏览器
Win的IDEA中可以正常运行。打jar包到Linux虚机上运行报错
我安装了对应版本的Chrome Driver,不是Driver版本的问题
为什么


2023-07-20 14:41:05.863 ERROR 19972 --- [nio-8081-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: Unable to find a free port] with root cause

java.lang.RuntimeException: Unable to find a free port
        at org.openqa.selenium.net.PortProber.findFreePort(PortProber.java:67) ~[selenium-remote-driver-3.141.59.jar!/:na]
        at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:351) ~[selenium-remote-driver-3.141.59.jar!/:na]
        at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94) ~[selenium-chrome-driver-3.141.59.jar!/:na]
        at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:157) ~[selenium-chrome-driver-3.141.59.jar!/:na]
        at com.example.windowcapturer.ScreenRecorder.ScreenRecorder(ScreenRecorder.java:31) ~[classes!/:0.0.1-SNAPSHOT]
        at com.example.windowcapturer.Controller.ScreenRecordingController.recordScreen(ScreenRecordingController.java:20) ~[classes!/:0.0.1-SNAPSHOT]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_262]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_262]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_262]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_262]
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.8.jar!/:5.3.8]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.8.jar!/:5.3.8]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1063) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.48.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.8.jar!/:5.3.8]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar!/:5.3.8]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.8.jar!/:5.3.8]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar!/:5.3.8]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.8.jar!/:5.3.8]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar!/:5.3.8]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) [tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) [tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) [tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) [tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) [tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) [tomcat-embed-core-9.0.48.jar!/:na]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.48.jar!/:na]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_262]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_262]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.48.jar!/:na]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_262]
  • 写回答

1条回答 默认 最新

  • IT论之程序员 2023-07-21 09:46
    关注
    
    Linux上运行ChromeDriver失败的常见原因有以下几点:
    1. ChromeDriver版本和Chrome浏览器版本不匹配。需要下载匹配的ChromeDriver版本,并确保其可执行文件在PATH中。
    2. 没有安装Chrome浏览器。需要在Linux上安装Chrome。
    3. 没有为Chrome浏览器设置显示的参数。在代码中需要添加显示参数,例如:
    python
    from selenium import webdriver
    
    options = webdriver.ChromeOptions() 
    options.add_argument('--headless')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    
    driver = webdriver.Chrome(options=options)
    4. 权限问题。ChromeDriver需要有执行的权限,可以尝试给可执行文件添加可执行权限:
    bash
    chmod +x chromedriver
    5.端口占用问题。ChromeDriver默认会绑定一个随机端口,如果端口被占用会导致失败。可以尝试指定固定端口:
    python 
    from selenium import webdriver
    
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
    
    driver = webdriver.Chrome(options=chrome_options)
    总之,需要确保ChromeDriver和Chrome版本匹配、chromedriver可执行、有足够权限、没有端口冲突等,这些是最常见的问题导致。
     kali linux 外置网卡各连接不上,不知道怎么解决办法?
    可以尝试以下几种方法:
    1. 检查外置网卡驱动是否安装正确,打开终端输入lsusb命令查看是否识别出外置网卡,如果没识别出来可能需要安装相应的驱动。
    2. 使用ip link命令检查网卡名称,使用ifconfig命令查看网卡是否获取到IP地址,如果没有获取到IP地址,可以尝试:
    - 使用dhclient eth0命令让网卡自动获取IP地址
    - 手动设置静态IP地址:
    sudo ifconfig eth0 192.168.0.100 netmask 255.255.255.0
    3. 检查网线是否连接正常,可以试试不同的网线。
    4. 查看网络管理器NetworkManager服务是否运行正常,使用systemctl status NetworkManager命令查看。
    5. 关闭网络管理器服务,尝试直接配置:
    sudo service network-manager stop
    sudo ifconfig eth0 up
    sudo dhclient eth0
    6. 修改网卡配置文件,将ONBOOT设置为yes,使能网卡开机启动。
    7. 查看防火墙是否放行了该网卡访问,使用iptables -L命令查看规则。
    8. 尝试重启网络服务sudo service networking restart
    如果问题仍未解决,可以查看dmesg命令输出的日志,看看有无报错信息。也可以试试其他Linux发行版是否可以识别。
     blueman该怎么只留一个进程啊
    可以通过以下两种方法使blueman只保留一个进程:
    1. 修改blueman的自动启动配置
    blueman的自动启动是通过session服务实现的。可以修改/etc/xdg/autostart/blueman-applet.desktop文件,在Exec行后面添加 --single-instance参数,像下面这样:
    Exec=blueman-applet --single-instance
    这样就会禁止blueman启动多个实例。
    2. 使用blueman-manager工具
    blueman-manager是一个命令行工具,可以用来控制blueman。可以使用它来关闭多余的blueman进程:
    首先运行`blueman-manager`查看当前运行的blueman实例:
    $ blueman-manager 
    <BluemanObject '/org/blueman/blueman'>
     
    然后使用quit方法关闭多余的实例:
    $ blueman-manager Quit
    这样就只会保留一个blueman实例运行。
    以上两种方法可以使得blueman只运行一个进程,避免显示多个蓝牙
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 7月20日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀