在Linux系统上运行jar包(不需要Docker,Tomcat等容器)解决xxx.jar中没有主清单属性

背景:新建一个maven工程(不是spring boot工程),打成jar包后放在linux系统上,通过java -jar xxx.jar运行。
操作

  • 在pom.xml中添加<packaging>jar</packaging>
  • 在idea中通过package命令打包
  • 将target下生成的jar包拉到linux下,并执行jar包如下:
    在这里插入图片描述
    情况1:
    如果构建的是springboot项目,Main启动类应该在根路径下,打包的时候在pom.xml文件中应该加下面代码,这样在启动jar包的时候就能够自动检索启动类。
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

情况2:
如果构建的不是springboot项目,即没有固定的启动类路径,则找到该执行哪个main,解决办法:在pom.xml中添加如下的代码,指定执行的main路径。

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <appendAssemblyId>false</appendAssemblyId>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
              //com.vis.datadetail.ReadTopoData是指定jar执行的main路径
              <mainClass>com.vis.datadetail.ReadTopoData</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>assembly</goal>
            </goals>
 
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

然后再打包,用RAR打开jar包,会发现在META-INF中的MANIFEST.MF文件中多出了Main-Class指定要执行的main路径。
在这里插入图片描述
如果不想在pom.xml中指定main路径,或者jar中有多个main,可以在执行运行指令的时候通过命令,指定想要执行哪个main。参考执行jar包中指定main方法
有的博客说手动改META-INF中的MANIFEST.MF文件,直接指定Main-Class,感觉理论上应该可行,毕竟打包的时候会根据pom.xml中配置的<plugin>生成MANIFEST.MF文件,但我没有成功,上述修改pom.xml指定main路径的方法亲测有效。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值