为什么我的程序编译后生成很多*$1.class文件?

在Java项目中如何反编译class文件及批量反编译? 前言:            反编译是一个对目标文件可执行程序进行逆向分析,从而得到源代码的过程。尤其是像Java这样的运行在虚拟机上的编程语言,更容易进行反编译得到源代码。今天介绍几款反编译的工具,以及如何更快的批量反编译。 介绍:        市面上免费的工具一大堆,这里就简单的介绍博主认为常用的反编译工具,例如(jd-gui、luyten,Procyon-Decompiler 等等)... 阅读详情
总结大家的意见,自己也试了一下,现得出以下结论: 
在java中,如果在一个类中定义了内部类,刚会生成: super&this.class的文件,如果给某个控件添加了Listener事件,则会生成 super&i.class的文件,其中i为Listener的个数。 
例如:下面的程序: 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 




/** 
* <p>Title: </p> 
* <p>Description: </p> 
* <p>Copyright: Copyright (c) 2001</p> 
* <p>Company: </p> 
* @author unascribed 
* @version 1.0 
*/ 


public class a extends JFrame { 
JPanel jPanel1 = new JPanel(); 
JButton jButton1 = new JButton(); 
JButton jButton2 = new JButton(); 
JButton jButton3 = new JButton(); 


public a() { 
try { 
jbInit(); 
} 
catch(Exception e) { 
e.printStackTrace(); 
} 
} 
private void jbInit() throws Exception { 
jButton1.setText("jButton1"); 
jButton1.addActionListener(new java.awt.event.ActionListener() { 
public void actionPerformed(ActionEvent e) { 
jButton1_actionPerformed(e); 
} 
}); 
jButton2.setText("jButton2"); 
jButton2.addActionListener(new java.awt.event.ActionListener() { 
public void actionPerformed(ActionEvent e) { 
jButton2_actionPerformed(e); 
} 
}); 
jButton3.setText("jButton3"); 
jButton3.addActionListener(new java.awt.event.ActionListener() { 
public void actionPerformed(ActionEvent e) { 
jButton3_actionPerformed(e); 
} 
}); 
this.getContentPane().add(jPanel1, BorderLayout.CENTER); 
jPanel1.add(jButton1, null); 
jPanel1.add(jButton2, null); 
jPanel1.add(jButton3, null); 
} 


void jButton1_actionPerformed(ActionEvent e) { 


} 


void jButton2_actionPerformed(ActionEvent e) { 


} 


void jButton3_actionPerformed(ActionEvent e) { 


} 
class b{ 
} 
class c{ 
class c1{} 
} 
} 
编译后生成的class文件有: 
a.class 
a$1.class //jButton1.addActionListener 
a$2.class //jButton2.addActionListener 
a$3.class //jButton3.addActionListener 
a$b.class 
a$c.class 
a$c1.class 
但如果a.java这样定义: 
class a{ 
} 
class b{ 
} 
注意为同一个文件: 
刚编译后生成b.class,a.class 
而不是a$b.class 


总算搞清楚了,再次谢谢大家,马上给分!
 
ASP.NET Core Identity + Mysql(实战一)——注册登陆 在进行实战之前,我们先来了解一下Identity。 ASP.NET Core Identity是用于构建ASP.NET Core Web应用程序的成员资格系统,包括成员资格、登录和用户数据存储。简单的来讲包括: 1.用户数据存储(使用任意你喜欢的关系型数据库,从sqllite到mysql、sqlserver等等,由Entity Framwork 支持) 2.登陆、注册外加身份认证(基于coo... 阅读详情

相关推荐

CST仿真提速秘籍:用好Local Mesh,别再让简单结构拖慢你的仿真速度

本文深入探讨了CST仿真中Local Mesh技术的应用,通过区域加密与全局排除策略,显著提升电磁仿真效率。针对5G天线阵列、微波滤波器等多尺度结构模型,提供了网格划分的黄金法则和实战技巧,帮助工程师优化仿真速度与精度,特别适用于电磁仿真和网格设置场景。

weixin_27134495的博客 404

java $.class_Java-编译后出现$1.class、$2.class等多个class文件

部署代码的时候,由于自身技术不精和疏忽,导致查询数据没有正常显示,排除法最后只能是放置部署文件时未包括多出来的$class文件。放上去之后果然好使了,才记录下这个问题。。。这是因为在我们写的类中存在匿名类对于接口和抽象类来说, 不能被实例化。例子:SysUserBean sysUserBean = this.jdbcTemplate.queryForObject(sql,new Object[]{...

weixin_35665584的博客 1454

国内主流AI编程工具使用实例及总结

AI编程辅助工具是利用人工智能技术来帮助程序员进行软件开发的工具。它们可以在代码编写、代码审查、错误检测、代码优化等多个编程环节发挥作用,提高编程效率和代码质量。通义灵码,基于通义大模型的AI研发辅助工具,提供代码智能生成、研发智能问答、任务自主执行等能力,为开发者带来智能化研发体验,引领AI原生研发新范式。包含智能编码助手和AI程序员。

技术博客 1万+

tomcat发布的项目,这个class文件为什么会有两个?其中一个加了$1?

当一个外部类中有内部类时,其编译后的文件,内部类 会带有$ 标识. 例如: 则ProjPrintControl$1 就是 ProPrintControl的内部类(如果不知道是哪个内部类,可以通过反编译就看出来了)...

码农界的小学生 2944

Python开发者必看:5分钟搞定Gemini API的3种调用方式(含代码示例)

本文为Python开发者详细介绍了三种高效调用Gemini API的核心方式:基础同步调用、流式调用和聊天模式,并涵盖多模态应用等高级特性。通过清晰的代码示例和实战场景分析,帮助开发者快速掌握Gemini API的集成与优化,提升AI应用开发效率。

g8f9d0s1a2的博客 1120

改善电流不匹配的级联电流镜布局设计 2002

模拟金属氧化物半导体 (MOS) 集成电路的性能在很大程度上取决于匹配精度的因素。 电流镜的匹配精度在模拟 IC 性能中尤为重要。 布局技术和器件尺寸被认为是可以在很大程度上改善匹配行为的主要因素。 尽管这些信息很重要,但对这两个因素的研究或研究有限。 在本文中,我们基于 Lan 等人 [1999] 提出的简单电流镜提出了一种新的级联电流镜布局技术。 Cascode电流镜的新布局在参数梯度存在的情况下改善了匹配特性。 讨论了跨晶体管有源区域的阈值梯度对电流镜匹配特性的影响。 使用 SPICE 仿真比较了新

Srfun的博客 4226

Java编译后出现$1.class等多个class文件问题总结

近几天熟悉公司的项目,这个项目是早式的写法,后台java已经封装好,很少能够接触到。这不,刚接手一个安卓项目,老大让我熟悉这个项目,有个下载任务客户说反应迟钝,需要我去优化下,终于接触到了web后台部分,我看了源码后,发现了在记录查询的时候出现致命的写法,for循环去读数据库每一条记录,这个真是致命的做法啊。 由于部分源码丢失,只能打开.class文件查看源码,正好使用jd-gui反编译工具打开.class文件,我下载了jd-gui.jar包,使用批处理打开。 IDEA有一个很好用的插件,下载该插件可以直

wzhy2016的博客 5788

从SGX到TDX:英特尔机密计算的技术演进与选型指南

本文深入解析了英特尔两代机密计算技术SGX与TDX的核心差异与选型策略。SGX提供应用级飞地隔离,安全等级高但开发复杂;TDX提供虚拟机级信任域保护,兼容性好且易于部署。文章结合金融与医疗行业实战案例,为开发者提供了清晰的选型指南,帮助根据代码可改性、安全需求、部署规模及生态成本选择最合适的机密计算方案。

java5的博客 419

java文件编译后额外生成的$1.class是怎么一回事

首先java文件编译生成class文件其基本规则是这样的: 内部类的class文件命名是:主类+$+内部类名 匿名类的class文件命名是:主类+$+(1,2,3....) 但是如果没有使用匿名类,会生成带$1.class文件么~~答案是会的。 先来看这样一段代码~ public class TestJavac { void Test() { innerClass lklk = new innerClass(); lklk.biu...

qq_44790703的博客 1万+

51-14 Retentive Network,RetNet 多尺度保留机制序列建模论文精读

RetNet 提出了多尺度保留机制序列建模,该机制支持三种计算范式,即并行、循环和分块循环。RetNet有更好的全局注意力建模、高效的计算效率、对遮挡的鲁棒性、支持基于注意力的图像生成、与置信度相关的门控机制和多任务学习等特点,对不同视觉任务可以共享历史注意力记忆,可以同时进行分类、分割、检测等任务。RetNet在视觉领域应该有广阔的应用前景。

AIgraphX 1613

SAP采购申请审批策略配置简介

SAP采购申请审批策略配置简介 1、CT04创建特征

我小时候很黑的博客 8159

编译后出现$1.class与$2.class的情况总结

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33895016的博客 430

C#读取和写入excel表数据--手把手教详解

C#读写excel数据详解

如如水的博客 4054

cmd命令下,使用javac命令,编译指定目录下的*.java文件,生成*.class文件到指定目录下。

目标: 使用jdk1.8bin目录下的javac、jdk1.9bin目录下的javac命令, 编译D:\111\222\下的HelloWorld.java文件,并生成到指定目录D:\333\444\下的HelloWorld.class文件。 使用到的javac命令参数: --class-p...

Jack_LEGION的专栏 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

解析java的*.class文件

这几天在写解析*.class文件的程序,实现class的反编译功能:目前所能实现的反编译是只含有方法的interface(不能反编译带有属性的interface)。不知道如何将源码打包上传,这里只帖出解析*.class文件的部分代码:package com.hexin.study.interpreter;import java.io.DataInputStream;import java.io.F

elathen的专栏 2545

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

java怎么生成class文件_怎样将java的class文件生成jar包

首先,我们必须在电脑上安装JDK(java 开发工具包)。我们可以在官网上进行下载。2安装完成后,我们需要配置环境变量。我们将JDK的安装目录下的bin文件所在路径配置到环境变量的path变量中。3配置完成后,我们打开命令提示符窗口,输入“javac”,会提示如图所示信息。说明我们的java环境变量配置成功。4在D盘的java目录下创建一个haha.java文件(其他位置也是可以的)。并输入如下代...

weixin_29959491的博客 9652

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

public class和class的区别

在编写类的时候可以使用两种方式定义类:public class定义类和class定义类,那么这这两种方式有什么区别吗?如果一个类声明的时候使用了public class进行了声明,则类名称必须与文件名称完全一致,如果类的声明使用了class的话,则类名称可以与文件名称不一致。范例:定义一个类(文件名称为:Hello.java) public class HelloDemo{ //声...

sdhagh的博客 3万+

关于java文件编译后,同一个文件出现"$"的class

在java中,如果在一个类中定义了内部类,刚会生成: super&this.class的文件,如果给某个控件添加了Listener事件,则会生成 super&i.class的文件,其中i为Listener的个数。 例如:下面的程序: import javax.swing.*; import java.awt.*; import java.awt.event.*; /** * Title:

free_xiang的专栏 1万+

Java反编译,反编译*.class文件

Java反编译,反编译*.class文件 手头只有class文件,没有*.java,为了获得程序的源代码,只好上谷歌查查了,MOCHA(类似的还有好几款反编译工具),起码对付我现在简单的看看代码的应用奏效了。 前提:安装Java EE SDK,安装一下。(好几年没装过Java了,发现现在的Java改进很大,当然,对于我这种Java盲来说,只是针对安装过程而言了。) 然后后续步骤就参考下面...

volnet的专栏 388

java一个文件两个class_一个Java文件中可以定义多个Class么?

一个Java文件可以定义多个Class么 ?答案肯定是可以的。下面我们测试一下://Test.javaclass A {}class B {}class C {}class D {}创建一个Test.java文件, 在这个文件中定义了4个类 分别是A,B,C,D。然后在编译一下这个Test.java文件,看会发生什么?[boardMacBook-Pro ~]$ javac Text.java[bo...

weixin_35988178的博客 6050

Scala 编译完生成两个class文件的区别

编写一个_04ClassObjectDemo.scala文件 object _04ClassObjectDemo{ // 1. 创建一个Person类,添加成员变量 class Person { var name:String = _ var age:Int = _ } def main(args: Array[String]): Unit = { ...

qq_41359684的博客 781

python反编译class文件_简单的反编译class文件并重新编译的方法

在没有.java源码的情况下,如果想修改一个.class文件。可以通过以下步骤实现:修改前的class文件:一、反编译.class文件成.java文件。1、可以使用Java Decompiler这个工具,直接打开对应的.class文件。然后点击菜单:File→Save Source,将文件保存成.java文件。如下:PS:Java Decompiler工具还可以用来反编译jar包,有时候需要了解下...

weixin_39901412的博客 1170

java 编译class文件_直接修改Java编译后的class文件

针对有些情况:没有代码环境,部署代码时需要修改Java编译后的class文件内容(少部分修改)jclasslib查看class文件内容我的在常量池里面找到了要修改的代码,记住 数组的下标代码修改使用 UpdateClass ,修改里面class文件地址(25行),数组下标(43行),要修改的内容(46行)附上代码package com;import org.gjt.jclasslib.io.Cla...

weixin_42560991的博客 1666

生成jar文件

Jar命令 当一个项目开发完成之后一定会存在有大量的*.class文件,对于这些文件的管理往往可以利用一种压缩结构的形式进行处理,而这样的结构在Java之中就叫jar文件,如果想把程序打包为Jar文件,那么可以直接利用jdk中提供的jar命令完成。 在最原始的时候如果想知道jar命令的时候直接输入一个jar命令即可,而在JDK1.9之后为了统一化所以需要使用“–help”查看相关的说明。 jar --help 下面通过程序的具体演示来实现jar的使用与配置的操作。 定义一个程序类,这个类代码如下:

weixin_46245201的博客 294

java的class文件反编译工具jad的应用

 java的class文件反编译工具jad的应用JAD用法具体用法: http://www.kpdus.com/jad.html  官方最新版本,支持jdk1.6 Java下的一个简单易用的反编译工具jad, 可以很方便的将.class反编译为.Java. 点击下载  一、基本用法 Usage:jad [option(s)] 直接输入类文件名,且支持通配符,如下所示。 c:/Java/

3947

Beyond Compare for MAC反编译class文件

Beyond Compare反编译Class文件procyon-decompiler下载jar包安装插件测试 Beyond Compare是支持调用第三方的插件应用来处理某些特殊文件的,只要第三方软件支持命令行命令操作,就可以集成进来。 procyon-decompiler procyon比jad等其他软件相比,更完美的解决了JDK版本不兼容的问题 下载jar包 Github 项目地址:https://github.com/mstrobel/procyon 百度网盘(0.5.36版本) 链接: ht

weixin_40448774的博客 3365
上一篇: android的apk之反编译
下一篇: ERROR: Application requires API version 10. Device API version is 8
superjunjin
博客等级 码龄17年 600粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值