java -jar运行SpringBoot的jar提示没有主清单属性

1.新建springboot的maven工程

在pom文件引入依赖包

 <dependencies>
        
		  <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.2.0</version>
        </dependency>
		
  		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
             <version>1.4.0.RELEASE</version>  
        </dependency>
        
  </dependencies>

启动类App.java

@SpringBootApplication
public class App{
    public static void main( String[] args ) {
        SpringApplication.run(App.class, args);
    }

}

测试类controller

@RestController
@RequestMapping("/arthas")
public class ArthasController {

	@RequestMapping("/abc")
	public String abc(){
		return "success";
	}
}

然后执行maven install命令将工程打成jar,使用java -jar jar包 。然后回车运行


本以为一切OK?谁知报这个错,什么原因???
主要是:MANIFEST.MF文件,没有指明程序的入口以及版本信息等内容


Main-Class代表了Spring Boot中启动jar包的程序
Start-Class属性就代表了Spring Boot程序的入口类,这个类中应该有一个main方法
Spring-Boot-Classes代表了类的路径,所有编译后的class文件,以及配置文件,都存储在该路径下
Spring-Boot-Lib表示依赖的jar包存储的位置这些值都是SpringBoot打包插件会默认生成的,如果没有这些属性,SpringBoot程序自然不能运行,就会报错:jar中没有主清单属性,也就是说没有按照SpringBoot的要求,生成这些必须的属性

解决方法,在pom文件中加入

  <build>
  <plugins>
  	<plugin>
  		<groupId>org.springframework.boot</groupId>
 		<artifactId>spring-boot-maven-plugin</artifactId>
 		<configuration>
 			<mainClass>com.xqc.arthas.App</mainClass>
 		</configuration>
 		<executions>
 			<execution>
 				<goals>
 					<goal>repackage</goal>
 				</goals>
 			</execution>
 		</executions>
  	</plugin>
  </plugins>
 </build>

mainClass:指明启动类的路径+名称,修改完上面文件,再次运行,一切OK

猜你喜欢

转载自blog.csdn.net/dhj199181/article/details/108579960