javap-c没有给我方法的字节码

vngu2lb8  于 2021-07-08  发布在  Java
关注(0)|答案(0)|浏览(166)

我有一个如下所示的java文件:

package answers;

class finalRed{
    private long l;
    public synchronized void increment(){
        l++;
    }
    public void decrement(){
        synchronized(this){
            l--;
        };
    }
}

我需要查看每个方法的字节码,我知道我应该使用javap命令。我需要这样的输出:

public synchronized void increment();
    Code:
       0: aload_0
       1: dup
       2: getfield      #2                  // Field l:J
       5: lconst_1
       6: ladd
       7: putfield      #2                  // Field l:J
      10: return

  public void decrement();
    Code:
       0: aload_0
       1: dup
       2: astore_1
       3: monitorenter
       4: aload_0
       5: dup
       6: getfield      #2                  
       9: lconst_1
      10: lsub
      11: putfield      #2                  
      14: aload_1
      15: monitorexit
      16: goto          24
      19: astore_2
      20: aload_1
      21: monitorexit
      22: aload_2
      23: athrow
      24: return

但是,运行 javap -c C:\Users\Ask\Git\ITUProj\PCPP-private-Garse\week01\code\answers\finalRed.class (我可以阅读,应该可以工作),使我这个输出:

Compiled from "finalRed.java"
public class answers.finalRed {
  public answers.finalRed();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return
}

实际上这两个方法都没有显示任何代码。用-v或-verbose运行javap也没有帮助。我应该如何运行命令来获取类中两个方法的实际字节码?
我的java版本是12.01

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题