0
我一直坚持这个错误"Caused by: java.lang.IllegalStateException: The driver is not executable: /var/task/chromedriver"
当我将我的jar项目部署到aws lambda函数。该项目在我的本地机器上正常工作,但似乎由于某种原因,aws无法执行chromedriver。 我的chromedriver文件被放置在资源文件夹中。aws lambda函数chromedriver不可执行
以下是我的测试配置文件:
@Configuration
public class TestConfig {
private static final Logger l = LoggerFactory.getLogger(TestConfig.class);
private String chromeDriver = org.apache.commons.lang.SystemUtils.IS_OS_WINDOWS ? "chromedriver.exe" : "chromedriver" ;
public WebDriver getDriver(){
URL resource = getClass().getClassLoader().getResource(chromeDriver);
String chromePath = null;
try {
chromePath = Paths.get(resource.toURI()).toString();
} catch (URISyntaxException e) {
l.info("cannot find chromedriver in resources");
}
System.setProperty("webdriver.chrome.driver", chromePath);
return new ChromeDriver();
}
}
我都chromedriver和chromedriver.exe,我尝试了和chmod 777文件,但没有成功。
我不认为'chmod'会在创建zip文件之前做到这一点 - 在zip文件中没有(afaik)结构来存储权限。在本地解压zip文件来检查。也许你可以首先标记文件可执行文件[使用Java](https://stackoverflow.com/a/43859098/1695906)? –
在lambda函数本身内部调用chmod。我将作为独立的jar部署到lambda函数中,而不是使用zip。我也尝试用链接和setPosixFilePermissions来标记它,但仍然出现这个错误。 –
另一个想法是:从[构建Lambda环境的基本映像]创建服务器(http://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html)并验证这在这样的机器上按预期运行。 –