首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

静态恒量不能反编译

2012-09-15 
静态常量不能反编译???? 近期项目中需要反编译修改多年前的class文件,经过反编译并修改后,用Eclipse编译和

静态常量不能反编译

???? 近期项目中需要反编译修改多年前的class文件,经过反编译并修改后,用Eclipse编译和java命令行得到的class文件不同,对新class文件反编译后如下:

?

?

????

??? 用Eclipse编译的class文件反编译:

package com.langchao.kpiengine.builder.baskpi;import com.langchao.kpiengine.model.common.BasDimensionType;import com.langchao.kpiengine.model.common.Kpi;import com.langchao.kpiengine.model.common.KpiRelation;import com.langchao.kpiengine.model.common.UnitKpi;import com.langchao.kpiengine.search.BasKpiDefine;import com.langchao.kpiengine.util.KpiConfigHelper;import com.langchao.kpiengine.xml.digester.DigesterUtil;import com.langchao.kpiengine.xml.digester.KpiDigester;import com.langchao.kpiengine.xml.digester.KpiDigesterFactory;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class BasKpiDefineDaoXmlImpl  implements BasKpiDefineDao{  private static Log log = LogFactory.getLog("KpiQueryService");  public static final String RULE_CONFIG;  public static final String DEFINE_CONFIG;  private BasKpiDefine basKpiDefine;  static Class class$0;  // ERROR //  static  {    // Byte code:    //   0: ldc 20    //   2: invokestatic 22org/apache/commons/logging/LogFactory:getLog(Ljava/lang/String;)Lorg/apache/commons/logging/Log;    //   5: putstatic 28com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:logLorg/apache/commons/logging/Log;    //   8: new 30java/lang/StringBuffer    //   11: dup    //   12: getstatic 32com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:class$0Ljava/lang/Class;    //   15: dup    //   16: ifnonnull +28 -> 44    //   19: pop    //   20: ldc 34    //   22: invokestatic 36java/lang/Class:forName(Ljava/lang/String;)Ljava/lang/Class;    //   25: dup    //   26: putstatic 32com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:class$0Ljava/lang/Class;    //   29: goto +15 -> 44    //   32: new 42java/lang/NoClassDefFoundError    //   35: dup_x1    //   36: swap    //   37: invokevirtual 44java/lang/Throwable:getMessage()Ljava/lang/String;    //   40: invokespecial 50java/lang/NoClassDefFoundError:<init>(Ljava/lang/String;)V    //   43: athrow    //   44: invokevirtual 54java/lang/Class:getPackage()Ljava/lang/Package;    //   47: invokevirtual 58java/lang/Package:getName()Ljava/lang/String;    //   50: invokestatic 63java/lang/String:valueOf(Ljava/lang/Object;)Ljava/lang/String;    //   53: invokespecial 69java/lang/StringBuffer:<init>(Ljava/lang/String;)V    //   56: ldc 70    //   58: invokevirtual 72java/lang/StringBuffer:append(Ljava/lang/String;)Ljava/lang/StringBuffer;    //   61: invokevirtual 76java/lang/StringBuffer:toString()Ljava/lang/String;    //   64: putstatic 79com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:RULE_CONFIGLjava/lang/String;    //   67: new 30java/lang/StringBuffer    //   70: dup    //   71: getstatic 32com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:class$0Ljava/lang/Class;    //   74: dup    //   75: ifnonnull +28 -> 103    //   78: pop    //   79: ldc 34    //   81: invokestatic 36java/lang/Class:forName(Ljava/lang/String;)Ljava/lang/Class;    //   84: dup    //   85: putstatic 32com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:class$0Ljava/lang/Class;    //   88: goto +15 -> 103    //   91: new 42java/lang/NoClassDefFoundError    //   94: dup_x1    //   95: swap    //   96: invokevirtual 44java/lang/Throwable:getMessage()Ljava/lang/String;    //   99: invokespecial 50java/lang/NoClassDefFoundError:<init>(Ljava/lang/String;)V    //   102: athrow    //   103: invokevirtual 81java/lang/Class:getName()Ljava/lang/String;    //   106: invokestatic 63java/lang/String:valueOf(Ljava/lang/Object;)Ljava/lang/String;    //   109: invokespecial 69java/lang/StringBuffer:<init>(Ljava/lang/String;)V    //   112: ldc 82    //   114: invokevirtual 72java/lang/StringBuffer:append(Ljava/lang/String;)Ljava/lang/StringBuffer;    //   117: invokevirtual 76java/lang/StringBuffer:toString()Ljava/lang/String;    //   120: putstatic 84com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:DEFINE_CONFIGLjava/lang/String;    //   123: return    //    // Exception table:    //   fromtotargettype    //   202532java/lang/ClassNotFoundException    //   798491java/lang/ClassNotFoundException}
?

?

?

用java命令行执行(如图):

?

C:\j2sdk1.4.2_16\bin>javac

–classpath .;kpimodelbuild.jar;commons-logging.jar;kpimodel.jar;commons-digester.jar;sax.jar;zhibiaoutil.jar

?BasKpiDefineDaoXmlImpl.java

?

对用命令行新生成的class反编译:

?

package com.langchao.kpiengine.builder.baskpi;import com.langchao.kpiengine.model.common.BasDimensionType;import com.langchao.kpiengine.model.common.Kpi;import com.langchao.kpiengine.model.common.KpiRelation;import com.langchao.kpiengine.model.common.UnitKpi;import com.langchao.kpiengine.search.BasKpiDefine;import com.langchao.kpiengine.util.KpiConfigHelper;import com.langchao.kpiengine.xml.digester.DigesterUtil;import com.langchao.kpiengine.xml.digester.KpiDigester;import com.langchao.kpiengine.xml.digester.KpiDigesterFactory;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class BasKpiDefineDaoXmlImpl  implements BasKpiDefineDao{  private static Log log = LogFactory.getLog("KpiQueryService");  public static final String RULE_CONFIG = BasKpiDefineDaoXmlImpl.class.getPackage().getName() + ".ruleconfig";  public static final String DEFINE_CONFIG = BasKpiDefineDaoXmlImpl.class.getName() + ".defineconfig";  private BasKpiDefine basKpiDefine;

?

?

经比对,Eclipse生成的对应的public static final String 静态常量的值在反编译后都没有了,而使用java命令行的反编译后正常。

问题找到了,但是原因未知。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

热点排行