前言
由于SWT提供的程序包并不是跨平台的,实际部署、运行时可以根据相应平台下载其对应程序依赖,在https://mvnrepository.com/search?q=org.eclipse.swt 如下图所示:
开发部署可以根据你的电脑进行下载不同的依赖,博主使用的macos系统,下面就总结经常可以遇到的SWT相关问题。
Could not load SWT library 的异常
当在macos平台运行SWT程序的时候,程序会抛出这个异常如下所示:
代码在window平台并没有这个问题,而到了macos平台就会抛出上述的问题。最开始以为是没有在macos加载到上述两个程序依赖。如下图所示:
这个实际是Windows平台中SWT应用程序需要本地化的DLL库的支持才能运行,它们分别是swt-awt-win32-3236.dll和swt-win32-3236.dll,但是在macos平台并不能运行上述两个dll文件,所以我们需要选择macos对应的依赖,将项目中的window依赖更改为macos系统的依赖即可:
原来的window平台的依赖
<dependency>
<groupId>org.eclipse.swt</groupId>
<artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
<version>4.3</version>
</dependency>
更改后的macos平台的依赖
<dependency>
<groupId>org.eclipse.swt</groupId>
<artifactId>org.eclipse.swt.cocoa.macosx.x86_64</artifactId>
<version>4.3</version>
</dependency>
更改完成后再次运行程序,发现用户目录下的/.swt/lib/macosx/x86_64/
)多了两个文件如下图所示:
SWTException: Invalid thread access异常
再次运行程序后发现报了这个错误如下图所示:
解决方法是在主程序加一下VM的启动参数:-XstartOnFirstThread
启动后可以发现SWT组件已经启动成功如下图所示:
The driver executable does not exist
输入网址进行访问页面报了以下的错误。
程序保存如下图所示:
可以看出程序是由于缺乏chrome的驱动造成的,驱动下载地址https://npm.taobao.org
需要注意的是请下载你电脑chrome浏览器对应的版本驱动,可以在浏览器查看chrome的版本如下图所示:
下载相应的链接驱动然后将其添加项目路径下即可。
再次运行程序并不报错。
WebDriverException: invalid argument
selenium访问url填写如下图所示:
报错如下图所示:
解决方法是:访问地址的时候填入http://
前缀即可。