修改.class文件并重新打包

操作环境:

jdk 1.7

eclipse

我以前一直是写C#的,由于公司换了新的系统(从北京总部挪来的),前端是C#,后端是Java,开始逐渐写Java代码,由于水平有限,有写得不对的地方请多多指教

写本文的目的在于捕获sql并写到txt文件中,方便查询

具体步骤如下:

1  在Eclipse中安装插件Eclipse Class Decompiler

参考链接:https://blog.csdn.net/qq_33966061/article/details/85341106  我是通过这里的github下载后本地安装的

https://www.cnblogs.com/godtrue/p/5499785.html

2  把你要修改的.class字节码文件,记为A,按住鼠标直接拖拽到Eclipse中,这样你就可以看到Java源码了,你把Java代码拷贝出来备用

3  在Eclipse中新建一个项目,并把A需要的jar包(其实把包含A的jar包也引进来也没关系)全部引入到项目中,导入Jar包参考:https://blog.csdn.net/lingyiwin/article/details/102540315中的方式1

4  在新建的项目中,新建类B.java,类名称和包名必须和A都保持一致,编写完毕后,保存,并来到项目的bin目录,找到B.class,拷贝出来备用

5  找到A对应的jar包,解压,记为C目录,并把B.class替换替换目录C中的A

6  重新把C目录打成jar包

   6.1  在cmd中尝试输入 jar命令,如果出现如下图的提示,

那就需要把jdk安装目录中bin目录配置到环境变量path中,我的是C:\Program Files\Java\jdk1.7.0_80\bin,如下图:

 6.2 对C目录进行打包,进入C目录(一定要进入C目录),输入cmd,弄出dos黑窗口,并输入命令   

jar cvfM0  包名.jar * 

如下图:

执行完毕后,这样,在C目录下就生成你想要的jar包了,然后拷贝覆盖原来的jar包就行了

文章到此,全部介绍完毕

下面的java代码额外送的

在window系统桌面新增txt文件并写入文本内容

package Test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.filechooser.FileSystemView;

public class FileHelper {


	String updateSqlFilePath=getDeskTopFilePath()+"//更新的sql.txt";
	String selectSqlFilePath=getDeskTopFilePath()+"//查询的sql.txt";
	File fUpdate=new File(updateSqlFilePath);
	File fSelect=new File(selectSqlFilePath);
	FileOutputStream fsUpate;
	FileOutputStream fsSelect;
	
	
	private String getDeskTopFilePath()
	{
		FileSystemView fsv = FileSystemView.getFileSystemView();
		File com=fsv.getHomeDirectory();
		return com.getPath();
	}
	
	public void WriteUpdateSql(String updateSql)
	{
		try {
			fsUpate=new FileOutputStream(fUpdate,true);
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		OutputStreamWriter dos=new OutputStreamWriter(fsUpate);
		try {
			Date day=new Date();    
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					
			dos.write(df.format(day)+"\t"+updateSql+"\r\n \r\n \r\n");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			dos.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public void WriteSelectSql(String selectSql)
	{
		try {
			fsSelect=new FileOutputStream(fSelect,true);
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		OutputStreamWriter dos=new OutputStreamWriter(fsSelect);
		try {
			Date day=new Date();    
			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
					
			dos.write(df.format(day)+"\t"+selectSql+"\r\n");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			dos.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxy2847225301

测试使用

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值