当我尝试运行maven构建后的Java -jar命令时,出现了“java.lang.NoClassDefFoundError:org/apache/kafka/clients/consumer/KafkaConsumer”的错误。
当我尝试运行maven构建后的Java -jar命令时,出现了“java.lang.NoClassDefFoundError:org/apache/kafka/clients/consumer/KafkaConsumer”的错误。
有没有一种方法可以强制maven(2.0.9)将所有依赖项包含在单个jar文件中?
我的项目构建为单个jar文件。我希望将来自依赖项的类也复制到jar中。
更新:我知道我不能将一个jar文件包含在另一个jar文件中。我正在寻找一种方法来解压指定为依赖项的jars,并将类文件打包到我的jar中。
admin 更改状态以发布 2023年5月22日
使用Maven 2,实现这个目的的正确方式是使用Maven2组件插件,它具有预定义的描述文件来实现这个目的,并且您可以在命令行上直接使用:
mvn assembly:assembly -DdescriptorId=jar-with-dependencies
如果您想使这个jar文件可执行,则只需将要运行的主类添加到插件配置中:
org.apache.maven.plugins maven-assembly-plugin my.package.to.my.MainClass
如果您想将该组件集成到正常的构建过程中,应将single 或者 directory-single目标绑定到生命周期阶段(package
是有意义的),类似于这样:
org.apache.maven.plugins maven-assembly-plugin create-my-bundle package single ... jar-with-dependencies
根据需要调整配置元素(例如使用manifest文件)。