Ability to decompile a Java class file is quite helpful for any Java developer who wants to look into the source of any open source or propriety library used in project. Though I always prefer to attach source in Eclipse of most common libraries like JDK but it’s not always possible with increasing number of dependencies. Java decompiler (a program which can decompile Java class files to produce so urce files) is very helpful on such situation. By using Java decompiler you can easily check out source of any .class file. Thanks to Eclipse IDE and increasing number of free plug-in available for Java developers, You can have powerful Java decompile in your armory. Earlier I used to used JadEclipse an Eclipse plugin which works well with JAD decompiler but knowing about JAD decompiler is not supporting Java 1.5 source, I was in hunt of another suitable and useful Eclipse plugin which can decompile . class file. My search ends with JD-Eclipse , this is another free Eclipse plugin for non commercial and personal use which helps you to get source from class files. JD-Eclipse is easy to install and its site has detailed step by step guide on how to install JD-Eclipse plug-in. If you are already familiar with Eclipse plugin installation than it just a cake walk.
 
 
How to decompile Class file in Eclipse IDE
Once you have JD-Eclipseinstalled and running, you probably need to restart Eclipse once you installed plug-in. You are ready to decompile Java class file from Eclipse. In order to decompile class file, just open any of your Java project and go to Maven dependencies of libraries to see the jar files included in your project. Just expand any jar file for which you don't have source attached in Eclipse and click on . class file. Now you can see the source code for that file in Java editor, simple and elegant isn't it. Though I highly recommend to attach source code for JAR in Eclipse , at least for frequently used libraries like JDK or Spring as quality of decompiled code and original code is different. Original code gives better visibility and also shows comment while decompiled code is just bare minimum version.
 

How to decompile class file in Java – javap command example

Even with powerful Eclipse IDE and plugin, we may some time needs t o work on command prompt esp ecially while working in Linux development servers and its not convenient to switch back and fourth for quick look on .class file or get some information from compiled form of source. Thanks to javap command you can decompile class file on the fly in command prompt. javap is standard binary which comes with JDK installation and resides in JAVA_HOME/bin directory. javap is similar to javac (java compiler) and work directly with .class file. In order to use javap command you must hav e JAVA_HOME in your system path. you can verify this by typing " javap " in command prompt and if it doesn't complain and instead show some output like below than you are good to go. I f it doesn't recognize the command means you need to set path, check how to set path in java more detailed steps.
 
abc@localhost:~/java javap  No classes were specified on the command line.   Try -help.
 
Now let's see what javap command offers us. We have a s imple Java class wit h one field and one method.
 
abc@localhost:~/java cat Hello.java  public class Hello {          private String version= "1.2" ;          public static void main ( String args []){                  System . out . println ( "Running Hello" ) ;          }  } 
abc@localhost:~/java javap Hello  Compiled from "Hello.java"  public class Hello extends java. lang . Object {      public Hello () ;      public static void main ( java. lang . String []) ;  }
 
So it looks javap only provides information related to method in .class file. It also stat e the constructor eve n default constructor added by Java compiler. javap can provide more information depending upon its command line option like - private will show all private members . h ere is an example of running javap command with -private option:
 
abc@localhost:~/java javap - private Hello  Compiled from "Hello.java"  public class Hello extends java. lang . Object {      private java. lang . String version ;      public Hello () ;      public static void main ( java. lang . String []) ;  }
 
 
How to see bytecode from .class file
javap   command can also show   bytecodes form compiled class files. Just run javap with -c option and it will print byte codes of   class file, as shown in below example:
 
abc@localhost:~/java javap -c Hello  Compiled from "Hello.java"  public class Hello extends java. lang . Object {  public Hello () ;    Code:      0 :   aload_0      1 :   invokespecial   # 1 ; //Method java/lang/Object." ":()V      4 :   aload_0      5 :   ldc     # 2 ; //String 1.2      7 :   putfield        # 3 ; //Field version:Ljava/lang/String;      10 :   return 
public static void main ( java. lang . String []) ;    Code:      0 :   getstatic       # 4 ; //Field java/lang/System.out:Ljava/io/PrintStream;      3 :   ldc     # 5 ; //String Running Hello      5 :   invokevirtual   # 6 ; //Method java/io/PrintStream.println:(Ljava/lang/String;)V      8 :   return 
}
 
That's all on how to decompile class files in Java and Eclipse IDE . JD-Eclipse is an easy to use eclipse plugin and has detailed installation steps documented. if you are running on JDK lower than Java 5 than You can still use famous JAD decompiler and JADEclipse plug-in. Apart from these are many more which I haven't try. Just go to Eclipse market place and you will see lot of those.
 
Relate Eclipse shortcuts and tutorials from Javarevisited Blog
 
 
 
 
 

How to decompile class file in Java and Eclipse - Javap command example(转)的更多相关文章

  1. Read / Write Excel file in Java using Apache POI

    Read / Write Excel file in Java using Apache POI 2014-04-18 BY DINESH LEAVE A COMMENT About a year o ...

  2. 出现错误:Unable to load configuration. - action - file:/E:/Java/Tomcat7.0/apache-tomcat-7.0.68-windows-x64/apache-tomcat-7.0.68/webapps/SSH2Integrate/WEB-INF/classes/struts.xml:8:43

    严重: Exception starting filter struts2 Unable to load configuration. - action - file:/E:/Java/Tomcat7 ...

  3. How to Read, Write XLSX File in Java - Apach POI Example---reference

    No matter how Microsoft is doing in comparison with Google, Microsoft Office is still the most used ...

  4. [Java] Create File with java.io.File class

    Create a file with some content in some specific location. The reference is here. /** * Write fileCo ...

  5. android studio# jdk8# class file for java.lang.invoke.MethodType not found

    https://github.com/evant/gradle-retrolambda/issues/23 class file for java.lang.invoke.MethodType not ...

  6. Apache POI – Reading and Writing Excel file in Java

    来源于:https://www.mkyong.com/java/apache-poi-reading-and-writing-excel-file-in-java/ In this article, ...

  7. [Training Video - 6] [File Reading] [Java] Create and Write Excel File Using Apache POI API

    package com.file.properties; import java.io.File; import java.io.FileNotFoundException; import java. ...

  8. The project was not built since its build path is incomplete. Cannot find the class file for java.lang.Object

    The project was not built since its build path is incomplete. Cannot find the class file for java.la ...

  9. JAVA Error:The project was not built since its build path is incomplete. Cannot find the class file for java.util.Map$Entry.....

    今天,学习Netty框架时遇到error:Description Resource Path Location Type:The project was not built since its bui ...

随机推荐

  1. 2014 北京邀请赛ABDHJ题解

    A. A Matrix 点击打开链接 构造,结论是从第一行開始往下产生一条曲线,使得这条区间最长且从上到下递减, #include <cstdio> #include <cstrin ...

  2. Qt程式异常崩溃处理技巧(Win)

    这篇文章谈的是 Qt4 程式在视窗系统下的异常崩溃处理技巧.所以须要在头文件里包括"#include <Windows.h>". 首先,程式难免会有异常崩溃的时候.重要 ...

  3. Windows Time服务无法启动 错误5拒绝访问

    接着上次写的文章 XP和Win7设置系统自动同步系统时间方法 本文就把故障出现的过程和解决方法一共写下来,希望大家可以看到本文在解决此项服务的思路.大家以后出现类似的问题和问题可以一样使用此类方法解决 ...

  4. CSS 实现图片灰度效果 兼容各种浏览器

    CSS 实现图片灰度效果 兼容各种浏览器如360浏览器 CSS实现图片灰度效果就是通过CSS样式让彩色图片呈现为灰色,相当于把一张图像的颜色模式调整为灰度,CSS可以通过以下几种方法来实现灰度效果. ...

  5. CodeForces 543A - Writing Code DP 完全背包

    有n个程序,这n个程序运作产生m行代码,但是每个程序产生的BUG总和不能超过b, 给出每个程序产生的代码,每行会产生ai个BUG,问在总BUG不超过b的情况下, 我们有几种选择方法思路:看懂了题意之后 ...

  6. 使用DiskGenius对虚拟机磁盘进行压缩

    使用虚拟机的用户是否感觉到您的虚拟磁盘文件越来越大,都快把宝贵的磁盘空间(宿主机物理硬盘)占满了呢? 有人会想到,我直接启动虚拟机,然后把里面没用的数据删除了,不就行了吗?实际测试发现,这样删除后,存 ...

  7. 180China丨the Agency for Brand Engagement and Experience

    180China丨the Agency for Brand Engagement and Experience Welcome to 180. Welcome to Creativity. Thank ...

  8. (step7.2.3)hdu 2554(N对数的排列问题——简单数论)

    题目大意:输入一个整数n,表示有n对整数.判断能否出现一种情况就是2个1之间有1个数,2个2之间有2个数..... 解题思路: 准备知识: ①n对数,共2*n个数.所以要有2*n个位置来放置这2*n个 ...

  9. iOS swift lazy loading

    Why bother lazy loading and purging pages, you ask? Well, in this example, it won't matter too much ...

  10. word2vec 中的数学原理具体解释(三)背景知识

      word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注.因为 word2vec 的作者 Tomas M ...