Java封装jar包对外提供可执行文件
编写Main方法,封装jar包
1、编写Main方法
import java.util.Date; /**
* 描述 :
*
* @Author : zhanghao
* @Time : 2019/10/28 14:08
*/
public class ***MainTest {
public static void main(String[] args) {
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring-config.xml");
***API ***ServiceAPI= (***ServiceAPI) applicationContext.getBean("****Impl");
System.out.println("定时任务执行结果_"+ DateUtils.format(new Date())+":"+***ServiceAPI.***Process());
}
}
具体项目结构如下:
2、通过idea可以快速进行Main方法的jar包封装,具体步骤可以参考
https://blog.csdn.net/yuang12345/article/details/90293013
https://blog.csdn.net/daiyunxing0545/article/details/85254303
https://blog.csdn.net/banjing_1993/article/details/83073210
3、编译完成后 执行 java -jar ****MainTest 即可运行相关方法
估计大概率,会执行报错(偷笑)
错误一:不识别java命令
检查是否正确配置了java的环境变量
错误二:***Test.jar中没有主清单属性
使用解压工具打开jar包,找到META-INF-->MANIFEST.MF->使用记事本打开,在第二行添加
Main-Class: main方法的路径
保存后重新执行命令即可
错误三:执行过程中报 Invalid signature file digest for Manifest main attributes
将打好包的jar文件中的 META-INF/*.RSA META-INF/*.DSA META-INF/*.SF 文件删掉
参考链接:https://blog.csdn.net/c1481118216/article/details/79667025
https://blog.csdn.net/dai451954706/article/details/50086295
错误四:执行过程中报 org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/context]
或者 其它的schema错误
由于没有配置META-INF/spring.handlers和META-INF/spring.schemas,所以如果工程中依赖了Spring的多个依赖,在打包时后面的会把前面的覆盖,使得这两个文件中永远只保存最后一个spring依赖的schema和handler。
方法一:使用maven的打包插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version> 1.7.</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<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>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.chenzhou.test.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
方法二:
第二种方法其实很简单,找到这三个文件,用我提供的这三个完整的文件覆盖即可。
通常,这三个文件都在jar包下面的META-INF路径下
参考链接:https://www.iteye.com/blog/chenzhou123520-1971322
https://www.iteye.com/blog/chenzhou123520-1706242
https://www.cnblogs.com/starwater/p/6679777.html
错误五:找不到 ***.propertie或者spring-config.xml
maven打包插件配置错误,resources下面的配置没有打进来
Java封装jar包对外提供可执行文件的更多相关文章
- Java常用jar包用途
Java常用jar包用途: USAGE INDEX JAR NAME USAGE 1 ASM asm-2.2.3.jar ASM字节码库 2 ASM asm-commons-2.2.3.jar ASM ...
- (转)java 从jar包中读取资源文件
(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件 ...
- 杂项-Java:jar 包与 war 包介绍与区别
ylbtech-杂项-Java:jar 包与 war 包介绍与区别 1.返回顶部 1. 做Java开发,jar包和war包接触的挺多的,有必要对它们做一个深入的了解,特总结整理如下: 1.jar包的介 ...
- 将java打jar包成linux后台服务service
将java打jar包成linux后台服务service 第一步:将java程序打成jar包 build.gradle配置文件中加spring-boot-gradle-plugin插件,具体配置如下(配 ...
- build path libraries java基础--Jar包添加到build path方式说明--01
摘自: http://blog.csdn.net/haolongabc/article/details/7007701 java基础--Jar包添加到build path方式说明--01 前言:这段短 ...
- PHP通过php-java-bridge调用JAVA的jar包里class类
正 文: 有的时候我们需要在PHP里调用JAVA平台封装好的jar包里的class类和方法,一般飘易推荐的做法是采用php-java-bridge做桥接,本文就来介绍一下大致的实现方法. 先简单说 ...
- java 执行 jar 包中的 main 方法
java 执行 jar 包中的 main 方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar执行后总是运行指定的主方法,如果 jar 中有多 ...
- Python3.5调用Java的jar包
声明:这个是在一个博客上看到的,过了俩星期了突然找不到原博客了,如果原来的博主看到,请联系我删除~ 主要是怕自己忘记,所以在此记录: 环境 Python3.5+JDK1.8 安装命令:python3 ...
- Java axis2.jar包详解及缺少jar包错误分析
Java axis2.jar包详解及缺少jar包错误分析 一.最小开发jar集 axis2 开发最小jar包集: activation-1.1.jar axiom-api-1.2.13.jar ax ...
随机推荐
- koa2---koa-bodyparser中间件
对于POST请求的处理,koa-bodyparser中间件可以把koa2上下文的formData数据解析到ctx.request.body中 安装: npm install --save koa-bo ...
- php在虚拟机和windows上的应用
学习目标:linux+apache+php合在一起的应用 在windows中三者的的关联及应用 php是apache的一个外挂程序,必须依靠web服务器才可以运行.当客户 ...
- selenium安装并导入pycharm
selenium安装 1.python的pip安装,命令pip install selenium 2.检查是否成功安装 打开pycharm-->File-->Settings-->P ...
- jmeter bodydata参数传递
参见:接口测试, jmeter bodydata 传送的参数,在请求中显示为空 新增http header信息头:
- EFK(Elasticsearch+Filebeat+Kibana)收集容器日志
介绍 Elasticsearch 是一个实时的.分布式的可扩展的搜索引擎,允许进行全文.结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档. Beats 是数据采集的得力工具 ...
- MySQL/MariaDB数据库的Galera高可用性集群实战
MySQL/MariaDB数据库的Galera高可用性集群实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Galera Cluster概述 1>.什么是Gale ...
- Python的插件化开发概述
Python的插件化开发概述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.插件化开发 动态导入: 运行时,根据用户需求(提供字符串),找到模块的资源动态加载起来. 1> ...
- jmeter设置代理服务器录制脚本
新建测试计划之后: 1.添加非测试元件:HTTP代理服务器 a.其中目标控制器可以控制选哪个线程放录制的脚本: b.将端口设置为8888或者其他不常用的端口,保持跟其他应用的端口不一致,否则被占用导致 ...
- Ranger安装部署 - solr安装
1. 概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库: Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方法. ...
- Mybatis框架-resultMap元素的自动映射级别
resultMap的自动映射级别:分为三种:NONE PARTIAL FULL 其中默认的属性是:PARTIAL:开启自动匹配,会自动匹配数据库中的字段名和实体类中的属性名,如果一致,就能匹配上, ...