环境信息如下:

  • OS: CENTOS 7
  • Tomcat : 9.0.46
  • SpringBoot: 2.3.12.RELASE
  • Build JDK: 1.8.0_261
  • Runetime JDK : openjdk 1.8.0_362

1 “Error: Could not find or load main class CLASS xxxx” 异常的排查步骤

Step1 确保JDK/JRE及相关环境变量配置有效

配置 Java 环境变量的步骤:

> vi /etc/profile
JAVA_HOME=/usr/local/java/jdk1.8.0_231
JRE_HOME=/usr/java/jdk1.8.0_151/jre
# CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH > source /etc/profie

2 "no main manifest attribute"异常的排查步骤

问题现象

使用命令启动应用程序nohup java -jar xxx.jar &java -cp xxx.jar cn.xx.XXBizApplication时,报"no main manifest attribute"错误

问题分析

no main manifest attribute 即:找不到主类

首先需考虑:

  • 是不是类路径存在配置错误发生变化,自己没有及时修正;

[情况1] 若启动方式为nohup bin/bootstrap >> logs/console.log 2>&1 & 方式启动时,重点排查:

  • 检查bootstrap脚本中的CLASSPATH是否包含全了 所需的 LIB 包,且包名是否正确?
  • 检查CLASS-Path 对应的JAR包是否存在、且包名一一对应无偏差?
  • 检查bootstrap脚本中的启动类的类路径是否遗漏、正确?

bootstrap脚本一般在pom.xml中配置完成后,由maven打包插件org.codehaus.mojo:appassembler-maven-plugin自动生成

[情况2] 若启动方式为 nohup java -jar xxx.jar &java -cp xxx.jar cn.xx.XXBizApplication 方式启动时,重点排查:

查看 目标 JAR 包的 META-INF/MANIFEST.MF、或 BOOT-INF/MANIFEST.MF 中 :

一般情况下,java 打包成 jar 包需要在  MANIFEST.MF 中指定 Main-Class 项,以便运行 java -jar xxx.jar 时找到对应的主类。
因为-jar的含义就是后面跟的jar包是有main class可独立运行,所以需要在打包成jar包时指定这个类;否则,需要在执行的时候手动指定。
  • 检查Class-Path 是否包含全了 所需的 LIB 包,且包名是否正确?
  • 检查CLASS-Path 对应的JAR包是否存在、且包名一一对应无偏差?
  • 检查Main-Class(启动类) 是否遗漏、正确?

解决方法

对症下药,切忌不经思考就采取如下手段!

情况1:启动手动指定引导启动类

  • 在运行jar包时,使用 -cp / --classpath 来手动指定
java -cp xxx.jar {cn.yy.xxx.引导启动类名}

情况2:打包时,pom.xml的打包插件中配置Main-Class

  • 方法1:打包插件org.springframework.boot:spring-boot-maven-plugin
    <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <executions>
<execution>
<phase>package</phase>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions> <configuration>
<includeSystemScope>true</includeSystemScope>
<mainClass>cn.api.ProviderApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
  • 方法2:打包插件org.springframework.boot:spring-boot-maven-plugin

3 java / jar 命令

3.1 解压JAR包

  • 方法1 解压到当前目录

注意: 不会创建一个 game 文件夹,而是将所有jar包的内容全部解压到当前文件夹

jar -xvf project.jar
  • 方法2 tar
tar -xvf xx.jar

# TAR 解压: 解压压缩文件到指定目录
tar -xvf <dirName/compressedFile>.jar -C <targetDir>
tar -xvf <dirName/compressedFile>.tar.gz -C <targetDir>

3.2 指定目录下的文件打成JAR包

  • 把指定目录下的所有文件打包成JAR包
jar -cvfM0 project.jar ./
  • -c 创建jar包

  • -v 显示过程信息

  • -f

  • -M

  • -0 阿拉伯数字,只打包不压缩之意

  • 将当前目录下的所有文件打包,并放至上一级目录下

jar -cf ../xx.jar ./*

3.3 查看 jar 包的内容

使用 t 选项可以查看 test.jar 中的内容

`` shell

[root@linux ~]# jar tvf test.jar # 在 test.jar



# 3 `unzip` 命令
`unzip`命令用于解压缩由`zip`命令压缩的“`.zip`”压缩包,也可用来解压`jar包` > 详情参见:
> + [[Linux]常用命令之【tar/zip/unzip/gzip/gunzip】 - 博客园/千千寰宇](https://www.cnblogs.com/johnnyzen/p/13732348.html#_label1) 【推荐】 ## CASE1 解压zip包到指定目录下

unzip -o xxx.zip -d tmp/


# Y 推荐文献
+ [[Linux]常用命令之【tar/zip/unzip/gzip/gunzip】 - 博客园/千千寰宇](https://www.cnblogs.com/johnnyzen/p/13732348.html#_label1) 【推荐】
+ [打包运行报no main manifest attribute, in XXXX的解决办法 - 博客园](https://www.cnblogs.com/juanxincai/p/13385339.html) 【推荐】
+ [JDK 命令之 jar -- 压缩/解压缩工具 - CSDN](https://blog.csdn.net/liaowenxiong/article/details/117354856) 【推荐】
+ [jar -cf 命令 - CSDN](https://blog.csdn.net/learnalwaystodie/article/details/120423641)
+ [java -jar命令详解 - CSDN](https://blog.csdn.net/shenxiaomo1688/article/details/127319133) 【推荐】 # X 参考文献
+ [Error: Could not find or load main class CLASS的解决方法 - CSDN](https://blog.csdn.net/taw19960426/article/details/102731592) 【推荐】
+ [由于“输入行太长”而在Windows上运行.bat文件时出 - ORcode](https://www.orcode.com/question/334154_k9388b.html)
+ [maven:用appassembler-maven-plugin打包含有自定义目录的JAVA程序 - 博客园](https://www.cnblogs.com/huiy/p/6169614.html)
+ http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html 【推荐】
+ [maven-compiler-plugin 插件详解 - CSDN](https://blog.csdn.net/Java_1710/article/details/120992614)
+ [appassembler-maven-plugin详解 - jianshu](https://www.jianshu.com/p/26332c0c5d92)
+ [maven-resources-plugin的copy文件使用 - CSDN](https://blog.csdn.net/kaige8312/article/details/111289209)
+ [启动jar文件,报”no main manifest attribute“异常 - CSDN](https://blog.csdn.net/weixin_43980975/article/details/118003575)
+ [jar运行报错no main manifest attribute - CSDN](https://blog.csdn.net/qq_33697094/article/details/110549536) 【不推荐】
+ [使用unzip解压jar包和jar包的打包方法 - CSDN](https://blog.csdn.net/itKingOne/article/details/78666402)

[Java EE]SpringBoot/Tomcat之启动时报"Error: Could not find or load main class CLASS xxxx"、"no main manifest attribute"异常的更多相关文章

  1. springboot 配置jpa启动报Error processing condition on org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration.pageableCustomizer

    springboot +gradle 配置jpa启动报Error processing condition on org.springframework.boot.autoconfigure.data ...

  2. JavaWeb学习----JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  3. 配置Java EE Eclipse+Tomcat开发环境

    以下将详细介绍在Eclipse下搭建Java EE开发环境的每一步, 环境:Win 7 + JDK 1.7 + Eclipse IDE for Java EE Developers 3.7 +Tomc ...

  4. 【转】eclipse for java ee的tomcat配置(常见问题解决)

    原文:http://blog.csdn.net/lanzhizhuxia/article/details/8087709 前一段时间准备学习ssh的源码,但是web开发的环境一直没有弄好,myecli ...

  5. 转 四大Java EE容器(Tomcat、JBoss、Resin、Glassfish)之简单比较

                                      现在流行的Java EE容器有很多:Tomcat.JBoss.Resin.Glassfish等等.下面对这四种Java EE容器进行 ...

  6. 四大Java EE容器(Tomcat、JBoss、Resin、Glassfish)之简单比较

    转自:http://www.cxybl.com/html/bcyy/java/201106241007.html 现在流行的Java EE容器有很多:Tomcat.JBoss.Resin.Glassf ...

  7. Azkaban无法启动错误Error: Could not find or load main class 12321

    1 错误日志 Using Hadoop from /mnt/software/hadoop-2.6.0-cdh5.16.1 bin/internal/../.. /mnt/software/jdk1. ...

  8. idea 启动时报 error:java 无效的源发行版

    说白了就是编译的版本不符合,有的地方是jdk1.7 有的地方是jdk1.8 所以你只要每个地方都保持一致就行. 每个地方!! 每个地方!! 每个地方!! 重要的设置说三遍! 以jdk1.7为例 fil ...

  9. idea 启动时报 error:java 无效的源发行版11

    编译的版本不符合,需要修改统一 

  10. IntelliJ IDEA 创建web项目后添加Java EE (Tomcat)的依赖包

    本文讲述的是IntelliJ IDEA 12版本 如果在编译器中创建一个web项目后,没有设置tomcat的依赖包,就不能成功的编译,会缺少javax.servlet.*等类. 添加的方法是: 打开p ...

随机推荐

  1. python excel使用

    python excel使用 https://blog.csdn.net/m0_59235508/article/details/122808875 pandas不覆盖写入 https://blog. ...

  2. SQL语句底层执行顺序

    1. SELECT 语句的完整结构 SQL92语法: SELECT ...,....,(存在聚合函数) FROM ...,...,... WHERE 多表的连接条件 AND 不包含聚合函数的过滤条件 ...

  3. dom和dom4j

    https://www.cnblogs.com/avivahe/p/5493060.html DOM.SAX.JDOM.DOM4J的区别

  4. [Leetcode 111]二叉树的最短深度 BFS/DFS

    题目 给定二叉树,求最短路径包含的节点个数 https://leetcode.com/problems/minimum-depth-of-binary-tree/ Given a binary tre ...

  5. Electron问题记录01:关于electron的notification在win10下不显示问题

    0.问题描述 在学习electron官网的notification例程时, 使用官网的代码运行时无法按照预期弹出窗口,在查询官网时发现以下解决方法. 官网解决方法:在 Windows 10 上,您的应 ...

  6. MarkDown使用规范

    写博客的简单语法. 标题语法 一级标题:# 标题内容 二级标题:## +标题内容 三级标题:### +标题内容 后续标题语法依次增加# 注:#号后有空格 MarkDown最高支持六级标题. 字体语法 ...

  7. 用友CELL

    Cell1.login('晋业软件','1101010373','1300-0616-0122-3005'); 下载地址: https://download.csdn.net/download/wil ...

  8. 第二节 printf语句和C++中的判断结构

    第二节 printf语句和C++中的判断结构 1.1printf语句作用 保留几位小数:%.4lf 保留四位小数 %.3lf 保留三位小数, 格式化输出:整数:printf("%5d!&qu ...

  9. You need to run build with JDK or have tools.jar on the classpath.If this occures during eclipse build make sure you run eclipse under JDK as well 错误

    我打开项目报错是这样的  pom.xml jdk配置什么的都是好的    但是还是报错 解决错误 : 1.打开你eclipse的根目录,找到eclipse.ini  这个文件夹打开 2.打开是这个样子 ...

  10. python之pyqt5-第一个pyqt5程序-图像压缩工具-小记

    (如想转载,请联系博主或贴上本博地址) 此为学习pyqt5的第一个程序,图像压缩工具. 因为比较简单,下面直接贴上代码. 效果图如下: # -*- coding: utf-8 -*- import s ...