Maven编译异常:org.apache.maven.archiver.MavenArchiver.getManifest解决方案

这里写自定义目录标题


Maven编译异常:org.apache.maven.archiver.MavenArchiver.getManifest解决方案

很多帖子里写的办法:
1.help ->Install New Software -> add ->https://otto.takari.io/content/sites/m2e.extras/m2eclipse-mavenarchiver/0.17.2/N/LATEST

PS:点击 next 前,将 eclipse Install 窗口右下角的 Contact all update sites during install to find required software 选项取消掉。
2.一直next confirm 安装更新 提示重启eclipse 然后再右键项目maven update project。

但其实eclipse用第一个地址(就是>https://otto.takari.io/content/sites/m2e.extras/m2eclipse-mavenarchiver/0.17.2/N/LATEST)都会显示无法连接的错误。

可怕的是十个帖子里有九个建议用这个地址!!!!

但是这个才是万能的:
http://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-mavenarchiver/0.17.2/N/LATEST/
特Mark如此,做备忘和建议!

<think>嗯,用户给了一个关于在Manifest文件中添加<mainClass>的问题,还附带了具体的Manifest内容。首先,我需要理解用户的问题到底是什么。看起来他们可能在配置Spring Boot应用的启动类时遇到了问题,特别是在使用PropertiesLauncher的情况下。 首先,用户提供的Manifest文件中有一些常见的属性,比如Spring-Boot-Version、Main-Class设置为PropertiesLauncher,还有Start-Class指向CAFClassLoader。然后他们添加了<mainClass>io.iec.edp.caf.app.manager.classloader.CAFClassLoader</mainClass>,这可能是在Maven或Gradle插件中指定的主类。但这里需要注意,Manifest文件中是不使用XML标签的,所以这可能是个误解。 接下来,我需要回忆Spring Boot的打包机制。PropertiesLauncher允许通过外部配置来指定主类,比如在manifest中设置Start-Class,或者通过命令行参数。而Main-Class通常指向Spring Boot的启动器,比如JarLauncher或PropertiesLauncher,而不是应用自己的主类。 用户可能在配置时混淆了Maven插件中的<mainClass>配置和Manifest中的Start-Class属性。Maven插件中的配置会生成对应的Manifest条目,所以如果在pom.xml里已经设置了<mainClass>,构建工具会自动处理,不需要手动在Manifest中添加XML标签。 此外,用户提供的Manifest中已经有Start-Class: io.iec.edp.caf.app.manager.classloader.CAFClassLoader,这应该是正确的方式。而<mainClass>标签可能是在pom.xml中的spring-boot-maven-plugin配置里使用的,不应该出现在Manifest文件中。Manifest的格式是键值对,使用冒号分隔,而不是XML标签。 可能用户看到某些文档或示例中有<mainClass>的配置,误以为需要将其直接写入Manifest,而实际上这是构建配置的一部分,由构建工具处理生成Manifest中的对应条目。 因此,需要指出用户的错误,并指导他们正确配置Maven插件,确保Start-Class正确设置,同时Main-Class指向Spring Boot的启动器。此外,检查是否有语法错误,比如多余的XML标签,这可能导致应用无法启动。</think>我们来逐步分析你提供的Manifest文件配置及其作用: 一、核心配置解析 1. **Main-Class**: $$org.springframework.boot.loader.PropertiesLauncher$$ - 这是Spring Boot的可执行JAR的入口类 - 允许通过外部参数动态指定实际启动类 2. **Start-Class**: $$io.iec.edp.caf.app.manager.classloader.CAFClassLoader$$ - 实际业务逻辑的入口类 - 当使用PropertiesLauncher时,该值会被自动识别 3. **<mainClass>标签问题**: - 该标签不应直接出现在MANIFEST.MF文件中 - 正确的用法是在Maven/Gradle构建工具中配置(示例): ```xml <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>io.iec.edp.caf.app.manager.classloader.CAFClassLoader</mainClass> </configuration> </plugin> ``` 二、典型问题排查 1. **层级结构要求**: ```bash example.jar ├── META-INF │ └── MANIFEST.MF # 必须包含Main-Class和Start-Class └── BOOT-INF ├── classes # 编译后的.class文件 └── lib # 依赖库 ``` 2. **启动方式选择**: - 直接启动(使用Start-Class): ```bash java -jar your-app.jar ``` - 自定义类加载方式(需PropertiesLauncher): ```bash java -jar your-app.jar --loader.mainClass=your.custom.ClassLoader ``` 三、验证建议 1. 使用清单验证命令: ```bash unzip -p your-app.jar META-INF/MANIFEST.MF ``` 2. 检查关键字段是否满足: - `Main-Class`必须指向Spring Boot启动器 - `Start-Class`必须指向业务主类 - `Spring-Boot-Lib`需正确指向依赖库路径 建议检查构建工具的配置,确保没有直接将XML标签写入清单文件,而是通过插件自动生成正确的清单配置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值