myeclipse重新编译java,反编译class文件并重新编译的方法

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

修改前的class文件:

0081361de51af680fb523e8854075701.png

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

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

7c15286b74d938ec6cf6c01d48435e47.png

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

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

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

becef6940aee881b94aadb7f1b0d29eb.png

三、重新编译成.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编码。

d95252c51277c881c61ce3a8054eb96a.png

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

658d24830560fa4f24f55abbe965e006.png

a4743d66ddc50fd304a7ece84d08b311.png

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

57b97a6e111a90afd8f1221808a44ea4.png

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

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

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

d2d5ce1e7388f889aa6792cdb3723f64.png

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

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

0dab5910fba9c3846a33e7c23caa967a.png

简单的反编译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 ...

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值