静态常量不能反编译

     近期项目中需要反编译修改多年前的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 22	org/apache/commons/logging/LogFactory:getLog	(Ljava/lang/String;)Lorg/apache/commons/logging/Log;
    //   5: putstatic 28	com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:log	Lorg/apache/commons/logging/Log;
    //   8: new 30	java/lang/StringBuffer
    //   11: dup
    //   12: getstatic 32	com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:class$0	Ljava/lang/Class;
    //   15: dup
    //   16: ifnonnull +28 -> 44
    //   19: pop
    //   20: ldc 34
    //   22: invokestatic 36	java/lang/Class:forName	(Ljava/lang/String;)Ljava/lang/Class;
    //   25: dup
    //   26: putstatic 32	com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:class$0	Ljava/lang/Class;
    //   29: goto +15 -> 44
    //   32: new 42	java/lang/NoClassDefFoundError
    //   35: dup_x1
    //   36: swap
    //   37: invokevirtual 44	java/lang/Throwable:getMessage	()Ljava/lang/String;
    //   40: invokespecial 50	java/lang/NoClassDefFoundError:<init>	(Ljava/lang/String;)V
    //   43: athrow
    //   44: invokevirtual 54	java/lang/Class:getPackage	()Ljava/lang/Package;
    //   47: invokevirtual 58	java/lang/Package:getName	()Ljava/lang/String;
    //   50: invokestatic 63	java/lang/String:valueOf	(Ljava/lang/Object;)Ljava/lang/String;
    //   53: invokespecial 69	java/lang/StringBuffer:<init>	(Ljava/lang/String;)V
    //   56: ldc 70
    //   58: invokevirtual 72	java/lang/StringBuffer:append	(Ljava/lang/String;)Ljava/lang/StringBuffer;
    //   61: invokevirtual 76	java/lang/StringBuffer:toString	()Ljava/lang/String;
    //   64: putstatic 79	com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:RULE_CONFIG	Ljava/lang/String;
    //   67: new 30	java/lang/StringBuffer
    //   70: dup
    //   71: getstatic 32	com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:class$0	Ljava/lang/Class;
    //   74: dup
    //   75: ifnonnull +28 -> 103
    //   78: pop
    //   79: ldc 34
    //   81: invokestatic 36	java/lang/Class:forName	(Ljava/lang/String;)Ljava/lang/Class;
    //   84: dup
    //   85: putstatic 32	com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:class$0	Ljava/lang/Class;
    //   88: goto +15 -> 103
    //   91: new 42	java/lang/NoClassDefFoundError
    //   94: dup_x1
    //   95: swap
    //   96: invokevirtual 44	java/lang/Throwable:getMessage	()Ljava/lang/String;
    //   99: invokespecial 50	java/lang/NoClassDefFoundError:<init>	(Ljava/lang/String;)V
    //   102: athrow
    //   103: invokevirtual 81	java/lang/Class:getName	()Ljava/lang/String;
    //   106: invokestatic 63	java/lang/String:valueOf	(Ljava/lang/Object;)Ljava/lang/String;
    //   109: invokespecial 69	java/lang/StringBuffer:<init>	(Ljava/lang/String;)V
    //   112: ldc 82
    //   114: invokevirtual 72	java/lang/StringBuffer:append	(Ljava/lang/String;)Ljava/lang/StringBuffer;
    //   117: invokevirtual 76	java/lang/StringBuffer:toString	()Ljava/lang/String;
    //   120: putstatic 84	com/langchao/kpiengine/builder/baskpi/BasKpiDefineDaoXmlImpl:DEFINE_CONFIG	Ljava/lang/String;
    //   123: return
    //
    // Exception table:
    //   from	to	target	type
    //   20	25	32	java/lang/ClassNotFoundException
    //   79	84	91	java/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命令行的反编译后正常。

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值