当我尝试运行maven构建后的Java -jar命令时,出现了“java.lang.NoClassDefFoundError:org/apache/kafka/clients/consumer/KafkaConsumer”的错误。

8 浏览
0 Comments

当我尝试运行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日
0
0 Comments

使用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文件)。

0
0 Comments

可以使用maven-assembly插件和\"jar-with-dependencies\"描述来完成这个过程。以下是我们其中一个pom.xml文件中相关的配置内容:\n\n

  
    
      
      
        maven-assembly-plugin
        
          
            package
            
              single
            
          
        
        
          
            jar-with-dependencies
          
        
      
    
  

0