精华内容
下载资源
问答
  • 修改jar包中的文件

    2018-12-27 14:12:03
    需求:工程引入的某一个jar不满足我的开发需求,需要修改jar中的代码。 1.下载jar对应的源码,新建一个java工程(maven),将jar中的文件放入新建工程中,不报错就行了(目的是修改完之后可以编译,不需要跑起来) 2...

    需求:工程引入的某一个jar不满足我的开发需求,需要修改jar中的代码。
    1.下载jar对应的源码,新建一个java工程(maven),将jar中的文件放入新建工程中,不报错就行了(目的是修改完之后可以编译,不需要跑起来)
    2.修改你需要修改的java文件
    3.编译当前工程(mvn install)
    4.在编译好的jar中取出修改了的.class文件
    5.将原来不满足需求的jar解压出来放入.class文件,再重新打成压缩包(.jar文件就是压缩文件只是后缀不是.zip之类的而已)
    6.把新生成的jar放入原来工程就好了

    展开全文
  • 修改jar包中class文件

    2018-11-13 18:51:00
    某日,想要更改jar包中的某个class文件,有无rar无法解压jar文件,故找到如下方式进行操作 1、解压某个jar包:在需要解压的jar包目录下,打开命令行(cmd),输入如下命令,输入:C:\jar>jar xf lm.jar 没有任何...

    某日,想要更改jar包中的某个class文件,有无rar无法解压jar文件,故找到如下方式进行操作

    1、解压某个jar包:在需要解压的jar包目录下,打开命令行(cmd),输入如下命令,输入:C:\jar>jar xf lm.jar 没有任何反应就表示解压成功。

    2、反编译class文件,相同路径新建java文件,修改所需代码,重新编译成class文件。

    3、压缩jar包:命令:jar cvf lm.jar 文件1 文件2 文件3 文件4    文件夹5/*      回车      压缩后的jar包就在本目录下,这样容易丢掉文件,如无不需要文件,可以这样

    命令jar cvf lm.jar ./  就全部压缩了

    这样,修改的class文件就能生效了。

    转载于:https://www.cnblogs.com/hzzll/p/9953970.html

    展开全文
  • java代码实现修改jar包中的配置文件

    千次阅读 2019-04-29 17:17:01
    使用场景 提供SDK给业务系统,需要给各个不同业务系统设置不同配置 ...实现代码 包含 JarTool类与StringReplace方法接口 @FunctionalInterface public interface StringReplace { String p...

    使用场景

    提供SDK给业务系统,需要给各个不同的业务系统设置不同的配置
    PS:借鉴https://blog.csdn.net/qq_40375627/article/details/80301743

    实现代码

    包含 JarTool类与StringReplace方法接口

    	@FunctionalInterface
    public interface StringReplace {
    
    	String process(String srcConf);
    }
    
    public class JarTool {
    
    	/***
    	 * 
    	 * @param jarPath 源jar包路径
    	 * @param newJarPath 新生成的jar存放路径
    	 * @param confPath 需要修改的配置文件相对路径
    	 * @param jarConfChange 配置文件内容替换逻辑
    	 * @return
    	 * @throws IOException
    	 */
    	public static final File change(String jarPath,String newJarPath,String confPath,StringReplace jarConfChange) throws IOException {
    		
    		if(StringUtils.isNotBlank(jarPath)) {
    			File file = new File(jarPath);
    			JarFile jarFile = new JarFile(file);
    			JarEntry entry = jarFile.getJarEntry(confPath.replace("\\", "/"));
    			List<JarEntry> lists = new LinkedList<JarEntry>();
    			for (Enumeration<JarEntry> entrys = jarFile.entries(); entrys.hasMoreElements();) {
    				JarEntry jarEntry = entrys.nextElement();
    				lists.add(jarEntry);
    			}
    			
    			String buffer = confContent(jarFile.getInputStream(entry), jarConfChange);
    			
    			return write(lists,jarFile,newJarPath, buffer,confPath);
    		}
    		return null;
    	}
    	
    	/**
    	 * 获取替换后的文件内容
    	 * @param inputStream
    	 * @param jarConfChange
    	 * @return
    	 * @throws IOException
    	 */
    	private static final String confContent(InputStream inputStream,StringReplace jarConfChange) throws IOException {
    		InputStreamReader isr = new InputStreamReader(inputStream);
    		BufferedReader br = new BufferedReader(isr);
    		StringBuffer buf = new StringBuffer();
    		String line = null;
    		try {
    			while ((line = br.readLine()) != null) {
    				buf.append(jarConfChange.process(line));
    			}
    		} finally {
    			br.close();
    			isr.close();
    		}
    		return buf.toString();
    	} 
    	
    	/**
    	 *	 写入到新的jar文件中
    	 * @param lists
    	 * @param jarFile
    	 * @param newJarPath
    	 * @param content
    	 * @param confPath
    	 * @return
    	 * @throws IOException
    	 */
    	private static final File write(List<JarEntry> lists,JarFile jarFile,
    			String newJarPath, String content,String confPath) throws IOException {
    		JarOutputStream jos = null;
    		
    		File outFile = new File(newJarPath);
    		if (outFile.exists()) {
    			outFile.delete();
    		}
    		outFile.createNewFile();
    		FileOutputStream fos = new FileOutputStream(outFile);
    		jos = new JarOutputStream(fos);
    		
    		try {
    			for (JarEntry je : lists) {
    				JarEntry newEntry = new JarEntry(je.getName());
    				jos.putNextEntry(newEntry);
    				if (je.getName().equals(confPath)) {
    					jos.write(content.getBytes());
    					continue;
    				}
    				if (jarFile.getInputStream(je) != null) {
    					byte[] b = new byte[jarFile.getInputStream(je).available()];
    					jarFile.getInputStream(je).read(b);
    					jos.write(b);
    				}
    			}
    		} finally {
    			// 关闭流
    			if (jos != null) {
    				try {
    					jos.close();
    				} catch (IOException e) {
    					jos = null;
    				}
    			}
    			fos.close();
    		}
    		
    		return outFile;
    	}
    	public static void main(String[] args) throws IOException {
    		String srcJarPath = "E:\\app\\xxx.jar";
    		String newJarPath = "E:\\app\\xxx1.jar";
    		String confPath = "META-INF/config/sysconf.properties";
    		File fi = change(srcJarPath, newJarPath, confPath, srcConf -> {
    			if (srcConf.startsWith("sysCode")) {
    				
    				return "sysCode = xxxxxx";
    			}
    			return srcConf;
    		});
    		System.out.println(fi.getName());
    	}
    	}
    
    展开全文
  • 现在有一个.jar文件,要修改其中某个文件的代码。 准备 确保JRE已安装且环境变量已配置。 安装Java Decompiler。官方地址为: http://java-decompiler.github.io/ 选择其中JD-GUI进行下载。 ...

    需求及准备

    需求

    现在有一个.jar文件,要修改其中某个文件的代码。

    准备

    • 确保JRE已安装且环境变量已配置。

    • 安装Java Decompiler。官方地址为:

      http://java-decompiler.github.io/

      选择其中的JD-GUI进行下载。

    • 安装winrar。

    提取class内容并修改

    打开JD-GUI,将.jar拖进来。JD-GUI会将jar包反编译为java源码。
    在JD-GUI中可以看到反编译源码,但不能直接修改。找到要修改的文件,复制。
    创建一个与.class同名的空白.java文件(为了后续生成.class不冲突,建议放在一个单独目录下),将复制的内容粘贴到该文件中。对其代码进行修改。

    编译

    打开CMD,定位到上面创建的.java所在目录下,输入:

    javac xxx.java
    

    编译后,会生成同名的.class文件。
    注意此方式只能编译不依赖其他模块的.java文件。对于依赖其他模块的,需要分析并定位.class的虚拟机代码后,创建java工程引入jclasslib修改。可以参考修改jar中的class:杀戮尖塔修改教程

    替换jar中class文件

    替换jar中class有两种方式:

    1. 借助rar直接替换。
    2. 解压jar为文件夹,替换class后重新打包为jar。

    借助winrar直接替换

    使用winrar直接打开.jar文件,进入指定目录后,将刚才编译生成的class直接拖进来替换即可。

    解压jar为文件夹,替换class后重新打包为jar

    使用winrar将.jar文件解压为文件夹,然后替换class。
    设该文件夹名称为xxx。打开CMD并定位到该文件夹所在目录下,输入:

    jar cvfm xxx.jar xxx\META-INF\MANIFEST.MF -C xxx /
    

    其含义为:使用xxx\META-INF\MANIFEST.MF作为配置文件,并调用-C切换路径为xxx文件夹下。然后打包出.jar文件。
    注意-C xxx /最后的文件夹名称xxx与/之间有个空格,不可省略。

    展开全文
  • 所以如果我们在实际开发中需要修改某个类来完成对应的业务需求,那我们可以打开这个jar包中的这个文件,查看它的包名和类名,然后去我们自己的工程中创建一个相同路径的文件,那么jar包中的文件就会被覆盖。...
  • 生产上出现了一个sql问题,只需要修改xml配置文件就可以,不想重新发布代码,所以可以考虑修改jar包的xml文件 直接用命令 vim xxxx.jar 列出jar包中的所有 vim xxxx.jar 2. 输入 /xyz 来搜索你想要更改的文件,...
  • 编辑jar包中class文件的几种方式

    千次阅读 2019-04-10 21:57:23
    在日常的开发中经常使用到第三方一些库,这些库可能提供gradle仓库的依赖,也可能提供jar包,有时候为了我们的一些自定义操作,需要修改这些jar包中的代码.这个时候该怎么做呢? 我所了解的可以修改jar中class的几种方式 ...
  • 加入自己公司提供的jar包,在查看源代码时出现中文乱码问题,可以通过以下方式解决: 修改Eclipse中 文本文件的默认编码:windows -> Preferences -> general -> Workspace -> Text file encoding ...
  • -u 添加文件jar包中 -v 生成详细报造,并输出至标准设备 -f 指定jar包文件名 -t 显示jar中内容列表 -c 创建一个jar包 -t 显示jar中内容列表 -x 解压jar包 -m 指定manifest.mf文件.(manifest.mf文件...
  • 使用maven使用组件打包后,直接通过eclipse浏览源代码时,发现中文...修改Eclipse中文本文件的默认编码:windows->Preferences->general->Workspace->Text file encoding设置为UTF-8 修改JAVA源文件...
  • 但一定会有那么些时候,你需要修改或是替换jar包,war包,ear包中的某个文件而不是整个重新生成。比如说,你有一个ear包已经部署到客户的服务器上,运行了有那么久了,版本也很老,但一个让你头痛的bug需要立即在...
  • 但一定会有那么些时候,你需要修改或是替换jar包,war包,ear包中的某个文件而不是整个重新生成。比如说,你有一个ear包已经部署到客户的服务器上,运行了有那么久了,版本也很老,但一个让你头痛的bug需要立即在...
  • 工作中对已有的项目进行二次开发,项目中...现在需要对页面还有代码进行修改,但是没有源码,采取的办法就是在项目中按照jia包中的路径创建包,再创建同名的类或者html,进行修改,新加的类和页面会覆盖jar包的。 ...
  • 在myeclipse代码中调试jar包中的类一般方式是修改了类后把代码替换jar中的class,然后替换系统中的jar文件并重启Web服务器,对jar可以关联源代码,关联后就能够断点跟踪代码。 上面的方式并不能热部署,每次修改后...
  • 我们在发布服务时候,有时候会出现配置文件jar包或者war包内,每次修改都需要重新打包。这样就会浪费很多时间,特别是线上问题。需要即刻生效。这个时候就需要我们在打包时候处理好。 第一步,在pom.xml...
  • 修改这个错误时候,如果不是对框架特别熟悉,就需要按照可能产生这个错误日志流程一步一步找,一时半会不一定能找到。比如本人最近对smartfoxserver搭建服务器做压测时候,发现最大等待线程数超过20就会...
  • maven 码jar包中中文注释乱码

    千次阅读 2018-06-05 09:32:33
    原文地址:http://acooly.iteye.com/blog/1878658目前公司开发多个组件有打包源代码并发布到nexus,但是很多...可以通过以下方法解决: 修改Eclipse中文本文件的默认编码:windows-&gt;Preferences-&gt;g...
  • 动态修改jar包中的class文件,预埋占位符字符串,在编译代码时动态植入要修改的值。记录一下整个过程及踩过的坑。创建一个Android项目,再创建一个Android library,删掉里面所有代码。添加groovy支持。如:apply ...
  • 但是后面定位发现当前jar包中的资源文件这种方式访问不到,打印出来的目录都是带"!"的,后面在网上各种找,结果看完后凉凉: 后面想用getResourceAsStream读成流形式,但是下载下来打不开,开始以为是还是老问题,...
  • 动态修改jar包中的class文件,预埋占位符字符串,在编译代码时动态植入要修改的值。记录一下整个过程及踩过的坑。 Github 地址:ClassPlaceholder 创建一个Android项目,再创建一个Android library,删掉里面所有...
  • 另外,使用jar命令可以将jar包解压出来:jar xvf xxx.jar(具体用法可以查看jar help)如何修改jar包中的.class文件:1、把X.jar包中的class用jd-gui、luyten反编译得到源码xxx.java2、执行jar xvf X.jar 解压X....
  • 修改jar中.class文件

    2020-07-06 14:49:40
    背景:在开发中遇到三方jar包中出现了错误,需要修改相关代码进行更新 1、查看.class文件 jar包就相当于一个压缩文件,windows中直接解压就行。 可以在 jd-gui 中查看要修改的.class文件,或者把.class文件拖进...
  • 线上环境服务出现bug,需要修改服务器上的代码,想通过替换服务器上的jar包中的文件来完成bug修复。 替换完成文件的JAR包出现错误: It has been compressed and nested jar files must be stored without ...
  • jar包中的类如何读取包内和包外的配置文件  最近将代码打包成jar包,关于如何处理读取配置文件的问题特此记录一下。  Java代码  out.properties  a.jar  -com  -a.class  -in.properties  如上所...

空空如也

空空如也

1 2 3 4 5 6
收藏数 116
精华内容 46
关键字:

代码修改jar包中的文件