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 ...
随机推荐
- Java 之 Session 包含验证码登录案例
需求: 1. 访问带有验证码的登录页面login.jsp 2. 用户输入用户名,密码以及验证码. 如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误 如果验证码输入有误,跳转登录页面, ...
- vue 属性props定义方法
当子组件接收父组件传过来的值的时候,我们一般有两种方式来接收 不过大家好像都用第二种方式,我只有在不确定数据类型的时候才用第一种方式 第一种: export default { // 不检测类型,全盘 ...
- windows xp远程连接
本节将用到windows网络共享,实现外网可以远程连接局域网内的任意主机 实验环境 两台windows xp虚拟机(内网+外网),一台主机 配置外网虚拟机 首先,为虚拟机添加两块网卡.一块作为网关(内 ...
- E2E测试工具之--01 Cypress 上手使用
The web has evolved. Finally, testing has too. 1. 简介 cypress 最近很火的e2e(即end to end(端到端))测试框架,它基于node ...
- 爬虫入门urlib,urlib2的基本使用和进阶
python2中的urlib和urlib2 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的 ...
- RocketMQ在CentOS7上安装
需要先以下组件 1.64bit OS, Linux/Unix/Mac is recommended;2.64bit JDK 1.8+; 安装了 Java JDK 就可以运行 RocketMQ 了 3. ...
- 定时任务模块——APScheduler
一.概念: python定时任务框架,基于日期,固定时间间隔,crontab类型的任务,并且可以持久化任务,并能以deamon守护方式运行任务 二.简介: 安装:pip install apsched ...
- XAMPP + PhpStorm + Xdebug本地实验环境搭建
参考: 下载合适的XDebug 点击这里,选择合适xdebug XAMPP配置 php_xdebug-xxxx.dll 拷贝dll至 D:\XAMPP\php\ext php.ini 文末追加 [XD ...
- 微信支付之获取openid
一.准备工具 不管开发什么,官方的文档应该是第一个想到的这里把官方文档贴出来:微信网页授权文档除此之外,我们还需要一个内网穿透的工具在开发环境下让微信能访问到我们的域名.我使用的是natapp.此类工 ...
- 项目Alpha冲刺--8/10
项目Alpha冲刺--8/10 作业要求 这个作业属于哪个课程 软件工程1916-W(福州大学) 这个作业要求在哪里 项目Alpha冲刺 团队名称 基于云的胜利冲锋队 项目名称 云评:高校学生成绩综合 ...