一个jar包,其中有个a.class和a$1.class,如何修改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个jar包,其中有个a.class和a$1.class,如何修改相关的知识,希望对你有一定的参考价值。

我想替换jar包中a.class的内容,把a.class反编译后的java文件修改后,工具编译代码,形成a.class和a$1.class(这个a$1.class内部类???不明白。。),然后把修改后的class文件替换到jar包中,启动程序就会报错,请问如何实现改a.class的想法。

类a$1是类a的匿名内部类,把a与a$1都反编译了,然后把a$1的内容替换到a中相应位置 参考技术A a$1.class 是说 你的a.java中有新类1,而a$1.class文件里,内容就是在a.java里的class 1
的内容。不知道对你有没有帮助本回答被提问者和网友采纳

eclipse导出jar包

软件配置

操作系统: win10 企业版
软件配置: JDK:1.8.0_241; eclipse:Oxygen.3a Release (4.7.3a);

打包文件源码

Java工程名称:serialNum,其中有个java文件SetserialNum.java
技术图片
SetserialNum.java内容如下:

package serialNum;

import java.text.SimpleDateFormat;
import java.util.Date;

public class SetserialNum {
public String setNum(String theLetter) {
	//传入A,现在时间为2020年03月30日12点45分18秒,最终生成A20200330124518
	String serialNum="";
	Date dNow = new Date( );
	SimpleDateFormat ft = new SimpleDateFormat("YYYYMMddHHmmss");
	serialNum=theLetter+ft.format(dNow);
	return serialNum;
    }

	public static void main(String str[]) {
		SetserialNum serial = new SetserialNum();
		String dstr=serial.setNum("A");
		System.out.println(dstr);
	}
}

一、eclipse导出jar包

操作步骤:
1.右键工程>>Export... >>Java>>Runnable JAR file>>Next
2.选择你要导出的工程(Launch configuration): serialNum;
3.选择要导出的路径(Export destination): D:serialNum.jar
4.直接点 Finish,打包完成
技术图片

说明:
Library handing: 库的处理
A.Extract required libraries into generated JAR:以解压的方式提取所需的库到生成的Jar包中
B.Package required libraries into generated JAR:将需要的Jar包放到生成的Jar包中
C.Copy required libraries into a sub-floder next to the generated JAR:将需要的库拷贝到一个子文件夹并放在生成的 jar 文件旁边

二、cmd命令执行Jar包

操作步骤:
打开cmd,输入 java -jar serialNum.jar > server.log 2>&1 点击回车
技术图片

说明:
-jar 执行Jar包的参数
*.jar 要执行的Jar包
server.log 执行中出现异常的时候会输出到命令行中,看着很乱,我们把它写入文件
2>&1 错误重定向,将标准输出错误写入server.log中

执行结果:
技术图片

以上是关于一个jar包,其中有个a.class和a$1.class,如何修改的主要内容,如果未能解决你的问题,请参考以下文章

直接修改别人jar包里面的class文件 工具:jclasslib

eclipse导出jar包

Java-----jar反编译修改重新打包

如何将类文件添加到另一个 jar 中的 jar 文件中 [关闭]

提取groovy jar

jar包指定内存启动