这两天使用maven项目需要打成可执行jar包,而且需要依赖本地项目jar包,然后出现了各种问题,maven打jar包后各种本地依赖包找不到;使用java打包和Eclipse导出可执行jar包后,jar包内的class文件都找不到路径。累死累活整了2天才可以正常执行。废话不多说,直接上说明:
pom.xml关键配置:
第一步:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<!-- 配置主程序启动入口 -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>cc.eslink.etbc.StandaloneBoot</mainClass>
</transformer>
<!--Spring Framework的多个jar包中包含相同的文件spring.handlers和spring.schemas,如果生成单个jar包会互相覆盖。
为了避免互相影响,可以使用AppendingTransformer来对文件内容追加合并 -->
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
以上代码可以参考一下出处说明
以上打jar后MANIFEST.MF中没有生成Class-Path内容,下面会写到内容快速获取方式
使用mvn package 命令打包成功后会在target目录下生产jar包,这个jar包暂时命名为A包
由于项目中有使用到本地的依赖包,所以执行后出现文件找不到错误,本地包即使打入jar包依然无法读取到,本人试过放入打jar包时连同依赖包一起打入到jar包内,然后配置MANIFEST.MF中calsspath,依然不管用,这里估计是我本人配置方法不对,但是不管他了。
第二步:拼接class-path所有依赖包名字
方法使用eclipse导出jar包
项目名上右键-export-java-Runnable JAR file 点击next ,launch configuration 选择你的启动main方法,export des 选择你的导出路径,(library里面我选择的是第二项package···)点击finish,导出jar包,这里命名为B包,,成功后,
找到导出的B jar包打开找到MANIFEST.MF打开复制里面的Rerc-Class-Path(我本地生成的class-path是没有值得,j)内容,复制到A jar包里面的MANIFEST.MF Class-Path下,即可。
修改执行jar中MANIFEST.MF文件
原文件内容
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dfsoft-ZYJ
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_60
Main-Class: cc.xiaobin.etbc.StandaloneBoot //程序运行入口
增加Class-Path后:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: dfsoft-ZYJ
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_60
Class-Path: activation-1.1.jar alipay-sdk-java20151210120052.j
ar alipay.jar antlr-2.7.7.jar aopalliance-1.0.jar•••
Main-Class: cc.xiaobin.etbc.StandaloneBoot //程序运行入口
多个jar包之间空格隔开
第三步:放入本地依赖jar包
将本地依赖jar包放入和可执行A jar包同级目录下即可,
可执行A jar包目前在test目录下,然后把本地依赖jar包全部复制到test目录下即可
第四步:执行jar包
使用【java –jar jarName.jar 参数1,参数2···】执行jar包
到这里为止,本人的jar包终于可以正常执行了,也不用报路径异常,找不到文件 ,xml解析不了这些问题了。整完才发现,原来如此简单,困扰我的主要原因就是前期找不到文件的奇怪问题,命名已经打入jar包还是出现错误,害的我整了好久。原来jar包中依赖的jar包需要和他本人同级才可以正常。
使用java方式或者eclipse导出可执行jar包后,由于项目中使用到获取文件路径的代码,导致项目运行报各种路径不对,maven打包测不会。所以本人没有使用java方式。如果大神们有更好的方式,请留言告知,好让鄙人学习一下,谢谢。
相关推荐
【标题】"maven+springmvc 项目代码" 涉及到的是使用Maven构建的Spring MVC应用程序的开发实践。Maven是一个流行的Java项目管理工具,它通过提供项目对象模型(POM)来管理项目的依赖关系、构建过程以及配置信息。...
在构建SpringMVC项目时,通常会使用Maven来管理依赖。通过在pom.xml文件中声明SpringMVC和其他相关库(如Spring Core、Spring Beans、Spring Web等)的依赖,Maven会自动下载这些库,确保项目运行所需的环境。 **...
本项目"eclipse下SpringMVC+Maven+Mybatis+MySQL项目搭建"就是一个典型的Java Web开发实例,它利用了SpringMVC作为控制层,Maven作为项目构建工具,Mybatis作为数据持久层框架,以及MySQL作为数据库管理系统。...
在SSM整合中,我们会在pom.xml文件中定义项目依赖,Maven会自动下载并管理这些依赖,确保所有必要的jar包都已包含,避免了“缺失jar包导致无法运行”的问题。 整合SSM框架的步骤大致如下: 1. 创建Maven项目:初始...
Spring MVC 是 Spring 框架的一个...在实际项目中,你可以通过 Maven 或 Gradle 引入这些依赖,从而利用 Spring MVC 的强大功能构建高效、健壮的 Web 应用。在使用时,记得查看官方文档以获取最新的配置和最佳实践。
在实际项目中,开发者通常会使用Maven或Gradle等构建工具来管理这些依赖,避免手动添加JAR包带来的版本冲突问题。通过这些JAR包,我们可以实现SpringMVC负责的业务逻辑处理、视图渲染,以及Mybatis提供的数据库操作...
在实际项目中,通常使用构建工具(如Maven或Gradle)来管理这些依赖,确保所有必要的jar包都能正确地导入并避免版本冲突。这些jar包的整合使得开发者能够快速搭建一个基础的Spring MVC环境,进行Web应用的开发。
综上所述,这些Jar包是构建一个基于SpringMVC的Java web应用的基础,它们协同工作,使得开发者能够高效地编写可维护、可扩展的代码。在开发过程中,通常会将这些依赖项配置在构建工具(如Maven或Gradle)的POM.xml或...
- **maven**:是一个强大的项目管理和构建工具,它管理项目的依赖关系,执行构建任务,并且支持插件机制,使得项目构建过程标准化。 - **java**:是这个项目的基础编程语言,Java SE(标准版)提供了运行Web应用所需...
在开发过程中,将这些 jar 包放入项目的类路径下,或者配置在 Maven 或 Gradle 的依赖管理中,就可以开始使用 Spring MVC 和 JdbcTemplate 进行开发了。需要注意的是,正确的版本匹配非常重要,不同的 Spring 和 ...
在构建SpringMVC项目时,通常会使用构建工具如Maven或Gradle来自动管理这些依赖,确保所有必要的jar包都已包含在类路径中。通过理解这些jar包的作用,你可以更好地构建、配置和运行SpringMVC应用程序,同时利用...
在`SpringMVC_MyBatis_Maven`项目中,我们需要在POM.xml文件中配置SpringMVC、MyBatis以及它们的依赖库,确保项目运行时能够自动导入所有必要的jar包。例如: ```xml <groupId>org.springframework ...
- 将SpringMVC的jar包添加到项目类路径中,通常通过Maven或Gradle管理依赖。 - 配置web.xml,设置DispatcherServlet及其初始化参数。 - 编写Controller,使用@RequestMapping等注解定义处理方法。 - 配置...
在开发环境中,通常使用 Maven 或 Gradle 这样的构建工具管理这些依赖,避免手动管理 jar 包的繁琐。通过在项目的 `pom.xml` 或 `build.gradle` 文件中配置相关依赖,可以自动下载并管理这些 jar 包,使得项目结构更...
开发者只需要在POM.xml文件中定义项目依赖,Maven会自动下载所需库,编译源码,执行测试,打包成JAR/WAR,甚至部署到服务器。 **SSM整合步骤**: 1. **创建Maven项目**:在IDE中创建一个新的Maven项目,并配置POM....
开发者在构建项目时,需要确保所有依赖的jar包都已包含,并且版本兼容,否则可能会出现运行时错误。 总的来说,Spring MVC和Hibernate的整合为Java Web应用提供了强大的功能,包括灵活的请求处理、高效的数据库操作...
本教程将详细讲解如何使用四个关键的技术栈——Maven、SpringMVC、MyBatis和JUnit来搭建一个功能完善的示例项目,并包含了数据库操作和单元测试。下面,我们将深入探讨每个组件以及它们在项目中的作用。 首先,**...
标题 "一套基本的SpringMvc工程所需要的最基本jar包(pom.xml)" 暗示了这个压缩包包含的是构建一个基于Spring MVC的Java Web项目所必需的依赖。Spring MVC是Spring框架的一部分,它提供了一个用于开发Web应用程序的...
在本项目中,Maven负责管理所有必要的jar包,确保每个组件都能正常运行。通过配置Maven的pom.xml文件,开发者可以方便地添加、更新或移除项目的依赖,同时,Maven还可以自动化执行编译、测试、打包等任务。 Spring ...
- src/main/webapp/WEB-INF/lib:如果是旧版本的Maven项目,这里会包含jar包,但现在通常由Maven管理。 - pom.xml:项目配置文件,定义项目信息、依赖、构建设置等。 通过这个例子,开发者可以学习如何将SpringMVC...