Java Maven Shade插件和minimizeJar

Java Maven Shade插件和minimizeJar,java,maven,classpath,executable-jar,maven-shade-plugin,Java,Maven,Classpath,Executable Jar,Maven Shade Plugin,我正在构建一个uber jarfile,但在maven shade插件中添加了true选项 我在设置该选项时遇到此错误: $> java -jar target/lambda-send-email-1.0-SNAPSHOT.jar Exception in thread "main" java.lang.NoClassDefFoundError: com.amazonaws.AmazonWebServiceClient at com.kilsbo.lambda.CreateAnd

我正在构建一个uber jarfile,但在maven shade插件中添加了
true
选项

我在设置该选项时遇到此错误:

$> 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)
然而,对于膨胀的大罐子(minimizeJar设置为false),它可以工作

我已经解压了最小化的jar,实际上包含了所需的类

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>

org.apache.maven.plugins
maven阴影插件
2.3
com.kilsbo.lambda.createandsendmail
假的
真的
包裹
阴凉处

有什么建议吗?

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

更有可能的情况是,找不到AmazonWebServiceClient所依赖的某个类。不幸的是,JVM仍然抛出这个稍微有点误导性的错误消息。例如,检查AmazonWebServiceClient的源代码,看看它是否扩展了另一个类,或者是否有任何导入不在您的着色uber jar中。一个常见的错误是pom中提供的任何依赖项都不会被着色。也许AmazonWebServiceClient是从另一个AmazonJAR中没有被着色的东西扩展而来的

<scope>provided<scope>