在没有.java源码的情况下,如果想修改一个.class文件。可以通过以下步骤实现:

修改前的class文件:

一、反编译.class文件成.java文件。

1、可以使用Java Decompiler这个工具,直接打开对应的.class文件。然后点击菜单:File→Save Source,将文件保存成.java文件。如下:

PS:Java Decompiler工具还可以用来反编译jar包,有时候需要了解下jar包里的代码实现,如果开发工具里看不到,可以直接用Java Decompiler打开jar包。

二、修改该.java文件中的内容。

可以直接用开发工具如MyEclipse,或者文本编辑器的方式对.java文件进行修改。

三、重新编译成.class文件。

前面2步比较简单,重点是这一步。重新编译成.class可以通过javac命令来执行。

1、首先将.java文件放到JDK的bin目录下,如:“D:\Java\jdk1.6.0_10\bin\”。PS:如果要编译的java文件中没有依赖其他类,单独放就可以。如果有依赖原先项目中的其他类,可以将原先整个项目的classes文件目录都放进JDK文件夹的lib目录下。

2、右键.java文件→用记事本打开该文件→文件→另存为→检查.java文件是否是ANSI编码,如下图。如果是UTF-8会因为乱码而编译报错,保存成ANSI编码。

3、开始菜单→运行...→cmd,打开命令行工具,使用javac命令编译java文件。如:“javac d:/java/jdk1.6.0_10/bin/test/TestDecompile.java”。如果没有报错(PS:如果报缺少依赖包的错误请看第四步),就是编译成功了,可以在.java文件所在的目录找到编译好的.class文件,如下:

4、可用Java Decompiler工具,查看.class文件中的内容是否正确,如下:

PS:反编译.class文件并重新编译的方法到这里就讲完了。

四、编译时缺少依赖包的解决方法。

1、如果编译的时候报出依赖的包不存在,如下:

2、可以将缺少的jar包放到JDK目录下的lib目录,再重新编译(如果缺的是自己编写的class文件,处理方法相同)。

3、如果还是识别不到,则需要配置下环境变量。右键我的电脑→属性→高级系统设置→高级→环境变量→系统变量,在classpath的值最后面加上对应包的路径,即刚放在lib目录的路径,再重新编译即可。如下:

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

在没有.java源码的情况下,如果想修改一个.class文件.可以通过以下步骤实现: 修改前的class文件: 一.反编译.class文件成.java文件. 1.可以使用Java Decompiler ...

删除moduleCache下文件解决预编译头文件相关的编译错误

之前有在代码全部正确的情况下,遇到过下面的编译错误: fatal error: file '.....h' has been modified since the precompiled header ...

编译Python文件

编译Python文件 一.编译Python文件 为了提高加载模块的速度,强调强调强调:提高的是加载速度而绝非运行速度.python解释器会在__pycache__目录中下缓存每个模块编译后的版本,格式 ...

通过预编译头文件来提高C++ Builder的编译速度

C++ Builder是最快的C++编译器之一,从编译速度来说也可以说是最快的win32C++编译器了.除了速度之外,C++builder的性能也在其它C++编译器的之上,但许多Delphi程序员仍受 ...

预编译头文件pch

1.         预编译头文件 作用:提高编译效率.预编译头文件(扩展名为.PCH),是为了提高编译效率而使用的一种方法,把一个工程中较稳定的代码预先编译好放在一个文件(.PCH)里.避免每次编译 ...

c++中 预编译头文件PCH

转载:https://blog.csdn.net/lovemysea/article/details/74858430 一.预编译头文件使用经验: 如果预编译头文件被正确使用时,它确实大大提高我们编程 ...

反编译APK文件

有时源代码丢失了,这时如果有apk文件的话,是可以对apk文件反编译得到源文件的,本文介绍一下简单的反编译apk文件的过程. 1.工具 反编译apk需要的工具有两个:apk2java和apktool, ...

MyEclipse反编译Class文件

对于需要查看Java Class文件源码的筒子们来说,必须在项目中导入Java源码才能查看Class文件的具体实现,这不仅十分的麻烦,因为有时我们并不可以获得Class文件对应的Java源码.今天就给 ...

随机推荐

linkedin开源的kafka-monitor安装文档

linkedin开源的kafka-monitor安装文档 linkedin 开源的kafka-monitor的安装使用可以参考官方的readme:流程介绍的已经比较清楚,但是还是有一些地方需要修正.让 ...

UITextView 显示不全的问题

//设置UITextView的内边距 textView.contentInset = UIEdgeInsetsMake(0, 0, 20, 0);

单调队列优化DP,多重背包

单调队列优化DP:http://www.cnblogs.com/ka200812/archive/2012/07/11/2585950.html 单调队列优化多重背包:http://blog.csdn ...

[JAVA] java仿windows 字体设置选项卡

想用java做一个像windows里一样的txt编辑软件,涉及到字体设置选项卡,在网上找了很久都没找到,就生气啦自己写一个,现在贴这里分享一下,下次再遇到这样的问题就不用自己亲自打代码啦! packa ...

php 配置正确的时间

关于php时区时间错误问题 date 当前时间 时差 当地 本地date_default_timezone_set 之前有一个遗留问题,就是echo date("y-m-d h:i:s&qu ...

php ++a和a++

<?php $a=$b=5;$a+$b=$a++-++$b;echo $b;?> 输出-1

jquery工具

http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxsplitter/jquery-splitter-gett ...

SQL AlawaysOn 之二:添加组织和域用户

1.在管理工具打开Active Directory 用户和计算机 2.在域控制器名称下面右键  选择 新建--组织单位, 3.输入组织名定,点确定 4.在组织右键--新建--用户 5.输入用户信息,点 ...

【PAT&lowbar;Basic日记】1002&period; 写出这个数

#include #include #include int main() { void print ...

Android持续集成之Jenkins 部署

Android持续集成之Jenkins 部署 [TOC] 0x00安装 准备工作如下: Tomcat8.5下载地址 Jenkins下载链接 1 将下载的jenkins.war包放至tomcat下的we ...

myeclipse重新编译java,反编译class文件并重新编译的方法相关推荐

  1. ant混淆编译java web,Android中使用ant混淆编译

    搞了好几天,查看了上百个网站,最后摸索出一套很简单的ant混淆编译的方法.下面开始: 1.拿一个普通项目来说,首先为它加上ant编译功能. android update project --name ...

  2. java持久层用文件_JAVA中用三种方法将字符串持久化到文件中

    经常需要将数据进行持久化,而我们的文件系统是最古老也是最可靠的保存方式.这里就给出一个在JAVA中把字符串保存到文件中的例子.如下: package test.base; import java.io ...

  3. Java实现监听文件变化的三种方法,推荐第三种

    背景 在研究规则引擎时,如果规则以文件的形式存储,那么就需要监听指定的目录或文件来感知规则是否变化,进而进行加载.当然,在其他业务场景下,比如想实现配置文件的动态加载.日志文件的监听.FTP文件变动监 ...

  4. java读取src xml文件路径_Java获取路径方法相对路径读取xml文件方法

    (1).request.getRealPath("/");//不推荐使用获取工程的根路径 (2).request.getRealPath(request.getRequestURI ...

  5. java编译和反编译

    Java开发必会的反编译知识(附支持对Lambda进行反编译的工具) (qq.com)https://mp.weixin.qq.com/s?__biz=MzI3NzE0NjcwMg==&mid ...

  6. java编译时为什么总找不到文件,javac编译时找不到文件的问题和运行项目找不到指定类问题...

    问题描述: 刚刚安装完JDK,打开Eclipse创建一个新项目,写了一个测试类进行输出打印语句时,报无法找到相应类. 然后,我跑到CMD中进行javac Test.java运行测试时,报找不到对应文件 ...

  7. 如何用shell脚本编译java工程

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  8. java解析txt文本文件_java读取文本文件内容方法详解,java如何读取txt文件?

    你知道java读取文本文件内容方式都有哪些吗?下面要给大家分享的就是比较简单的方法,一起来了解一下吧. 如何使用java实现读取TXT文件里的内容的方法以及思路: 下面先来看一下例子:import j ...

  9. Java实现对PDF文件添加水印

    Java实现对PDF文件添加水印 目录 Java实现对PDF文件添加水印 导入依赖 工具方法 效果 最近项目中遇到对PDF添加水印,实现有多种,采取的是itextpdf 导入依赖 <!-- 对P ...

最新文章

  1. 千言万句,Nginx从入门到精通,看这一篇足矣
  2. 【设计模式】代理模式 ( 动态代理使用流程 | 创建目标对象 | 创建被代理对象 | 创建调用处理程序 | 动态创建代理对象 | 动态代理调用 )
  3. python day29
  4. native字体尺寸自适应 react_react-native中 屏幕以及字体 大小适配
  5. Web开发学习路线图
  6. EntityFramework和EntityFramework.Extended使用说明——性能,语法和产生的sql
  7. void*和void类型
  8. java都市男人心痒痒_会让男人心痒痒的女人,是懂得套路的
  9. Java怎么避免重复订单_javaEE高并发之如何产生唯一不重复订单号
  10. STL之inner_product
  11. 手机黑圆点怎么打_手机能「打快板」是怎么回事?浅谈手机的光学防抖
  12. 解决H5在微信浏览器或QQ浏览器修改title的问题
  13. shortcut switch in terminal start pos end pos
  14. 图像仿射变换 图像平移 python实现
  15. idea启动tomcat出现‘D:\Programfiles‘ 不是内部或外部命令,也不是可运行的程序
  16. vue.js可视化开发工具_Vue.js开发工具
  17. drools中Fact的equality modes
  18. 机器学习 (六): Sigmoid 公式推导和理解
  19. tp无线路由器设置打印服务器,TP-Link TL-WDR4320 无线路由器打印服务器设置指南
  20. rrpp协议如何修改_RRPP(快速环网保护协议)

热门文章

  1. 可以卸载什么程序来对计算机进行瘦身,爱机巧妙瘦身轻轻松松卸载软件之问与答 -电脑资料...
  2. 为啥黑客都人手一台笔记本电脑?
  3. [转]海量存储检索原理系列文章
  4. 求助 vs2019编辑C++项目:MSVC头文件大量报错
  5. C#调用Matlab2018 dll文件-快速傅里叶变换
  6. php 模拟蜘蛛,PHP模拟百度蜘蛛,伪造IP爬行网站,附源代码
  7. PCB 传输线教程(上):基于 Polar Si9000 与嘉立创工艺的传输线设计
  8. ios AVPlayer无法在线播放视频
  9. C++ 凯撒密码具体代码实现
  10. Java乱码问题(乱码是如何产生的,怎么解决)