在pom中添加selenium依赖项后,AWS Lambda Jar无法压缩

这是一个奇怪的错误。将selenium依赖项添加到我的maven项目的pom中并将其上传到lambda之后,它说无法解压缩文件。但是,在删除依赖项之后,lambda可以很好地解压缩文件(但是它附带了后来找不到的类)。我尝试过一个接一个地删除依赖项,但是每一个都会触发错误。

关于如何解决这个问题的任何想法?

找不到类错误

org/openqa/selenium/WebDriver: java.lang.NoClassDefFoundError

java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver

Lambda无法压缩错误

Calling the invoke API action failed with this message: Lambda was not able to unzip the file

导致问题的依赖项

    <dependency>

<groupId>org.seleniumhq.webdriver</groupId>

<artifactId>webdriver-common</artifactId>

<version>0.9.7376</version>

</dependency>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-chrome-driver</artifactId>

<version>3.141.59</version>

</dependency>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>3.141.59</version>

</dependency>

更新的依赖关系(对于Vishal)

    <dependency>

<groupId>org.seleniumhq.webdriver</groupId>

<artifactId>webdriver-common</artifactId>

<version>0.9.7376</version>

</dependency>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-chrome-driver</artifactId>

<version>3.141.59</version>

</dependency>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>3.141.59</version>

</dependency>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-api</artifactId>

<version>2.0rc2</version>

</dependency>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-remote-driver</artifactId>

<version>3.141.59</version>

</dependency>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-support</artifactId>

<version>3.141.59</version>

</dependency>

组态

 <build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>3.6.0</version>

<configuration>

<source>1.8</source>

<target>1.8</target>

<encoding>UTF-8</encoding>

<forceJavacCompilerUse>true</forceJavacCompilerUse>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-shade-plugin</artifactId>

<version>3.0.0</version>

<executions>

<execution>

<phase>package</phase>

<goals>

<goal>shade</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

</build>

回答:

阴影插件将所有依赖项与开发的代码结合在一起,并在一个Uber

JAR中对其进行加密。缺点是它可以覆盖资源文件,并且不能与签名的jar一起很好地使用(至少以我的经验)。

如果可能的话,我建议远离阴影插件。

就是说,如果您必须使用它-您可能会遇到合并jar资源的问题。您可以使用许多变压器来解决此问题,并且您需要研究确实需要哪一个。我将从这样的事情开始

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-shade-plugin</artifactId>

<version>2.4.3</version>

<configuration>

<shadedArtifactAttached>true</shadedArtifactAttached>

<shadedClassifierName>${executable.classifier}</shadedClassifierName>

<filters>

<filter>

<artifact>*:*</artifact>

<excludes>

<exclude>META-INF/*.SF</exclude>

<exclude>META-INF/*.DSA</exclude>

<exclude>META-INF/*.RSA</exclude>

</excludes>

</filter>

</filters>

</configuration>

<executions>

<execution>

<phase>package</phase>

<goals>

<goal>shade</goal>

</goals>

<configuration>

<transformers>

<transformer

implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />

<transformer

implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">

<mainClass>fully.qualified.ClassName</mainClass>

</transformer>

</transformers>

</configuration>

</execution>

</executions>

</plugin>

你可以找到关于Apache更发电产品的插件这里

我建议的替代方法是Spring Boot,它使用Jar-in-Jar结构和自定义ClassLoader来从内部jar中加载类。

由于不必像Shade插件方法那样重写文件,因此这是一种更简单的方法,它可以更好地处理依赖项。

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

<version>1.3.6.RELEASE</version>

<configuration>

<classifier>${executable.classifier}</classifier>

<layout>ZIP</layout>

<mainClass>fully.qualified.ClassName</mainClass>

</configuration>

<executions>

<execution>

<phase>package</phase>

<goals>

<goal>repackage</goal>

</goals>

</execution>

</executions>

</plugin>

认真地看一下简单的配置!

注意:大部分内容来自我自己的注释-版本号可能有点旧…

以上是 在pom中添加selenium依赖项后,AWS Lambda Jar无法压缩 的全部内容, 来源链接: utcz.com/qa/411407.html

回到顶部