当前位置: 首页 > 知识库问答 >
问题:

带有minimizeJar的Maven Shade插件

邹麻雀
2023-03-14

我正在构建一个uber jarfile,但用精简了。

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

$> 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)

但是,对于臃肿的大罐子(miniizeJar设置为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>

有什么建议吗?


共有1个答案

商俊智
2023-03-14

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

更有可能的情况是找不到亚马逊网络服务客户端所依赖的某些类。不幸的是,JVM仍然抛出这个稍微误导的错误消息。例如,检查亚马逊服务客户端的源代码,看看它是否扩展了另一个类,或者是否有任何不在阴影uber-jar中的导入。一个常见的错误是,任何

<scope>provided<scope>
 类似资料:
  • 问题内容: 我正在尝试使用Git插件在Jenkins中配置Git项目。在项目配置页面中,我在Git配置中输入存储库URL,这是一个https URL(https://git.mycompany.com/git/MyProject.git)。但是,在构建项目时,出现以下错误: 我可以从命令行克隆存储库,也可以在Jenkins项目的预构建步骤中通过执行Shell命令来克隆存储库,因此我对插件配置为何不

  • 我目前正在我的<code>Jenkinsfile 由于我使用的云托管的kubernetes是从dockerd到containerd作为容器运行时,我想问一下是否有人使用带有jenkins kubernetes插件(特别是podtemplates)的containerd。

  • 我正在使用swagger codegen maven插件(2.2.2)从inputSpec生成API和模型类。语言是Spring,库是Spring boot。 昂首阔步生成的API类是用@Controller注释注释的,是否有任何配置选项可以将其更改为用@RestController注释API类? 技术堆栈 springboot-2.2.5java-jdk11maven-3.6.1swagger-

  • 我试着运行mvn声纳:声纳,我得到了这个: [ERROR]无法在YamarinArtifactId项目上执行goal org.codehaus.mojo:sonar-maven-plugin:2.0:sonar(默认-CLI):Can not execute sonar:FxCop执行失败。FxCop执行失败,返回代码为“521”。有关更多信息,请查看FxCop文档。->[帮助1] 你知道该怎么办

  • 我不知道如何正确地连接这个插头,有人能帮助我吗? webpack.config.js如下所示;https://gist.github.com/marcingolenia/2fa78ed2cd42f9294da5edd22d351245 我希望这条线能解决问题;

  • 注意:我查看了这篇类似的旧文章,但当时不可用。