Java Maven Shade插件和minimizeJar
我正在构建一个uber jarfile,但在maven shade插件中添加了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
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>