Web项目替换jar包中的文件的方法
经常遇到这样的问题,需要修改jar包中的方法。应该如何做?
1、有些很人性化的框架jar包,比如SpringSecurity,可以修改配置文件指定一个新建的类,让类实现Jar包中的对应的接口就好了。
2、大部分的jar包都不会有这么方便的功能的。有一个简单的办法就是,在项目中建一相同路径相同名称的文件,当项目启动的时候,会优先使用本地编写的类,覆盖掉jar包中的内容。也可以是xml文件,properties属性文件。
3、还有一部份就算这样,在项目启动以后还是会调用jar包中的方法,我在使用gradle进行开发的时候就是这样。这里就只能使用最直接的方法了,直接修改jar包中的方法,替换原有的jar包。这个是可以实现,只是有点麻烦,不写了。
4、第3中方法的缺陷就是如果Jar包不能在部署以后改动,就不能用了,比如maven项目下的jar包。此时还有一个终极办法,如果你是使用tomcat进行部署的话,可以使用。
tomcat默认有conf、lib、webapps这三个目录,其中conf是放tomcat的配置文件,lib是放tomcat的jar包的,webapps中一般放的是我们项目的代码。tomcat进行加载的时候,会优先调用conf和lib目录下的文件。所以可以把要替换的xml文件放在conf目录下,需要替换的jar包放在lib目录下(需要提前将jar包中的对应方法进行修改)。这样项目中可以下载jar包,部署后也不会出错。大功告成!
原创文章,欢迎转载,转载请注明出处!
Web项目替换jar包中的文件的方法的更多相关文章
- maven 如何给web项目添加jar包依赖
maven 如何给web项目添加jar包依赖 CreateTime--2018年4月19日19:06:21 Author:Marydon 开发工具:eclipse 1.打开pom.xml文件--& ...
- 使用命令动态更新JAR包中的文件
动态更新JAR包中的文件,经本人实际测试可正常执行! 一.查询jar包中要替换的文件位置 jar -tvf gateway.jar | grep topjui.config.js 二.在当前 ...
- java读取jar包中的文件
随手写了一个java小工具,maven打包成功后,发现工具总是读不到打在jar包中的文件信息,要读取的文件位于 /src/main/resources 目录下,打包成功后,文件就在jar包中根目录下, ...
- 替换Jar包内的文件
要替换Jar包内的文件可以用以下命令实现: jar uvf myjar.jar com/test/myclass.class 这里值得注意的是 myclass.class 必须放在com/test ...
- 在swt中获取jar包中的文件 uri is not hierarchical
uri is not hierarchical 学习了:http://blog.csdn.net/zdsdiablo/article/details/1519719 在swt中获取jar包中的文件: ...
- Spring自动扫描无法扫描jar包中bean的解决方法(转)
转载自:http://www.jb51.net/article/116357.htm 在日常开发中往往会对公共的模块打包发布,然后调用公共包的内容.然而,最近对公司的公共模块进行整理发布后.sprin ...
- IDEA修改jar包中class文件后重新生成jar包
一.背景 最新想要修改rebeyond大佬的冰蝎项目,特地去网上搜索如何修改jar包中的源码再替换回去的方法,但由于现在的一些文章写的太烂,导致走了很多弯路,因此写下这篇快速使用IDEA修改源码并替换 ...
- 解决SpringBoot jar包中的文件读取问题
前言 SpringBoot微服务已成为业界主流,从开发到部署都非常省时省力,但是最近小明开发时遇到一个问题:在代码中读取资源文件(比如word文档.导出模版等),本地开发时可以正常读取 ,但是,当我们 ...
- jar包中File 文件找不到的异常分析与解决
源链接: http://hxraid.iteye.com/blog/483115#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会 ...
随机推荐
- angularjs springMVC 交互
AngularJS中的$resource使用与Restful资源交互 1.AngularJS中的 $resource 这个服务可以创建一个资源对象,我们可以用它非常方便地同支持RESTful的服务端数 ...
- 阿里云telnet 3306端口失败
在阿里云的服务器上安装了MySQL, 然后远程访问总是不通. 查询了很久,排查思路如下: 检查mysql是否启动 检查本机3306端口是否处于监听状态 检查阿里云控制台是否开启了安全限制 检查mysq ...
- Intel x86_64 Architecture Background 3
多层次的cache结构解决了CPU和DRAM之间处理速度不一致的问题,在Intel体系架构下,CPU核心和主存DRAM之间有着三层的cache.其中一层缓存L1和二层缓存L2在CPU核心(core)中 ...
- Spring Boot(十六):使用 Jenkins 部署 Spring Boot
Jenkins 是 Devops 神器,本篇文章介绍如何安装和使用 Jenkins 部署 Spring Boot 项目 Jenkins 搭建.部署分为四个步骤: 第一步,Jenkins 安装 第二步, ...
- 五年.net程序员Java学习之路
大学毕业后笔者进入一家外企,做企业CRM系统开发,那时候开发效率最高的高级程序语言,毫无疑问是C#.恰逢公司也在扩张,招聘了不少.net程序员,笔者作为应届生,也乐呵呵的加入到.net程序员行列中. ...
- JS_各种排序方法
排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大,则应采 ...
- Bash : IO 重定向
标准输入/输出(standard I/O)可能是软件设计原则里最重要的概念了.这个概念就是:程序应该有数据的来源端.数据的目的端(输出结果的地方)已经报告问题的地方,它们分别被称为标准输入(stand ...
- 【亲测有效】Centos安装完成docker后启动docker报错docker: unrecognized service的两种解决方案
今天在学习Docker的时候 使用yum install docker安装完后启动不了,报错如下: [root@Sakura ~]# service docker start docker: unre ...
- Linux下开源邮件系统Postfix+Extmail+Extman环境部署记录
一.基础知识梳理MUA (Mail User Agent) MUA 既是"邮件使用者代理人",因为除非你可以直接利用类似 telnet 之类的软件登入邮件主机来主动发出信件,否则您 ...
- C_数据结构_递归不同函数间调用
# include <stdio.h> void f(); void g(); void k(); void f() { printf("FFFF\n"); g(); ...