AmazonWebServiceClient

AmazonWebServiceClient

我正在构建一个uber jarfile,但对maven shade插件使用了<minimizeJar>true</minimizeJar>选项。

使用该选项集时出现此错误:

$> java -jar target/lambda-send-email-1.0-SNAPSHOT.jar

Exception in thread "main" java.lang.NoClassDefFoundError: com.amazonaws.AmazonWebServiceClient
    at com.kilsbo.lambda.CreateAndSendEmail.addEmailToDynamo(CreateAndSendEmail.java:148)
    at com.kilsbo.lambda.CreateAndSendEmail.handleRequest(CreateAndSendEmail.java:125)
    at com.kilsbo.lambda.CreateAndSendEmail.main(CreateAndSendEmail.java:43)


但是,使用the肿的大罐子(将minimizeJar设置为false),它可以工作。

我已经解压缩了迷你罐子,实际上包括了所需的类。

unzippedJar/$> file com/amazonaws/AmazonWebServiceClient.class

com/amazonaws/AmazonWebServiceClient.class: compiled Java class data, version 50.0 (Java 1.6)


所以,我在想这里有一个类路径问题,但是我在阅读Maven Shade插件文档时并没有真正找到解决方案。

我在pom中的插件设置:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>com.kilsbo.lambda.CreateAndSendEmail</mainClass>
                    </transformer>
                </transformers>
                <createDependencyReducedPom>false</createDependencyReducedPom>
                <minimizeJar>true</minimizeJar>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>


有什么建议么?

最佳答案

如果com / amazonaws / AmazonWebServiceClient.class与要查找和执行的类文件存在于同一jar中,则没有类路径问题。类加载器找到要加载的类。

更有可能是找不到AmazonWebServiceClient依赖的某些类的情况。不幸的是,JVM仍然抛出此稍微误导性的错误消息。例如,检查AmazonWebServiceClient的源,以查看它是否扩展了另一个类或是否有任何导入不在带阴影的uber-jar中。一个常见的错误是pom中任何提供的依赖项都不会被着色。AmazonWebServiceClient可能是从另一个未着色的Amazon jar中扩展而来的。

09-11 19:56