“no main manifest attribute, in app.jar” 错误详解与解决方案

“no main manifest attribute, in app.jar” 错误详解与解决方案当你尝试使用 java jar app jar 命令运行一个 JAR 文件时 如果看到错误信息 no main manifest attribute in app jar 这意味着该 JAR 文件的清单文件 MANIFEST MF 中缺少了 Main Class 属性 JVM 无法确定程序的入口点 因此无法启动应用程序 本文将全面解析此问题的原因

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



当你尝试使用 java -jar app.jar 命令运行一个 JAR 文件时,如果看到错误信息 “no main manifest attribute, in app.jar”,这意味着该 JAR 文件的清单文件(MANIFEST.MF)中缺少了 Main-Class 属性。JVM 无法确定程序的入口点,因此无法启动应用程序。

本文将全面解析此问题的原因,并提供针对不同构建工具和开发环境的详细解决方案。

每个 JAR 文件都包含一个特殊的清单文件:META-INF/MANIFEST.MF。这个文件包含了关于 JAR 包的元数据信息。

对于 Spring Boot 项目,必须使用 spring-boot-maven-plugin 来生成可执行的 JAR 文件。

正确的 pom.xml 配置:

 
  
    
    "1.0" encoding="UTF-8"?> 
  
    
    
     
     
    " 
   
     
     http://maven.apache.org/POM/4.0.0 
   
     
     " 
   
     
      xmlns:xsi= 
   
     
     " 
   
     
     http://www.w3.org/2001/XMLSchema-instance 
   
     
     " 
   
     
      xsi:schemaLocation= 
   
     
     " 
   
     
     http://maven.apache.org/POM/4.0.0  http: 
   
     
     // 
   
     
     maven.apache.org/xsd/maven-4.0.0.xsd"> 
   
     
      
      4.0. 
      0 
      
   
     
      
      
        org.springframework.boot 
       
      
        spring-boot-starter-parent 
       
       
       2.7. 
       0 
       
       
      
   
     
     
       com.example 
      
   
     
     
       demo-application 
      
   
     
      
      1.0. 
      0 
      
   
     
     
       jar 
      
   
     
      
       
       11 
       
      
   
     
      
       
       
         org.springframework.boot 
        
       
         spring-boot-starter 
        
       
      
   
     
      
       
        
        
          org.springframework.boot 
         
        
          spring-boot-maven-plugin 
         
         
          
         
           com.example.DemoApplication 
          
         
        
       
      
  
    
    

 
  
    
     
   
     
      
       
       
         org.apache.maven.plugins 
        
       
         maven-jar-plugin 
        
        
        3.2. 
        0 
        
        
         
          
          
            com.example.DemoApplication 
           
           
           true 
           
          
            lib/ 
           
          
         
        
       
      
  
    
    

对于非 Spring Boot 的普通 Maven 项目,需要配置 maven-jar-plugin:

 
  
    
     
   
     
      
       
       
         org.apache.maven.plugins 
        
       
         maven-jar-plugin 
        
        
        3.2. 
        0 
        
        
         
          
          
            com.example.DemoApplication 
           
           
           true 
           
          
            lib/ 
           
          
         
        
       
      
  
    
    

确保使用正确的构建命令:

构建完成后,检查生成的 JAR 文件:

build.gradle 配置:

3.2 普通 Gradle 项目

如果你需要手动创建可执行 JAR 文件,可以按照以下步骤:

创建一个名为 MANIFEST.MF 的文件,内容如下:

注意: 文件末尾必须有一个空行!

在 Docker 容器中遇到此问题通常是由于构建过程不正确导致的。

对于 Spring Boot 应用:

FROM openjdk:11-jre-slim

构建和运行命令:

如果暂时无法修复 JAR 文件,可以使用以下方式运行:

确保构建过程中没有警告或错误:

如果看到类似 [INFO] Skipping repackaging 的消息,说明配置有问题。

在多模块项目中,确保在包含主类的模块中配置了 spring-boot-maven-plugin

 
  
    
     
  
    
     
   
     
      
       
       
         org.springframework.boot 
        
       
         spring-boot-maven-plugin 
        
       
      
  
    
    

如果主类名称不标准,需要显式指定:

com.example.custom.CustomStartup

有时依赖冲突会导致插件无法正常工作。可以尝试:

“no main manifest attribute, in app.jar” 错误的根本原因是 JAR 文件缺少必要的 Main-Class 清单属性。解决这个问题的关键在于:

通过本文提供的系统性解决方案,你应该能够快速诊断和解决这个常见的 Java 部署问题。记住,预防胜于治疗——在开发阶段就建立正确的构建和测试流程,可以避免在生产环境中遇到此类问题。

小讯
上一篇 2026-04-14 09:41
下一篇 2026-04-14 09:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/261450.html