repl下的javap

scala> :javap 在我的笔记本上(linux)不能工作:javap unavailable on this platform
搜索后:http://www.scala-lang.org/node/10703

在启动时将 tools.jar设置到classpath即可:

$ scala -cp /data/program/java/lib/tools.jar

不过另外的问题是在REPL下使用 javap不如在命令行下更清晰,比如 object A{def foo(){}} 在命令行下实际编译成了2个class 一个 A.class 另一个 A$.class

A.class反编译的内容为:

public final class A extends java.lang.Object{
    public static final void foo();
}

A$.class反编译的内容为:

public final class A$ extends java.lang.Object implements scala.ScalaObject{
    public static final A$ MODULE$;
    public static {};
    public A$();
}

在 REPL下用:javap看到的是合在一起的:

scala> :javap A
Compiled from "<console>"
public final class A$ extends java.lang.Object implements scala.ScalaObject{
    public static final A$ MODULE$;
    public static {};
    public void foo();
    public A$();
}

另,对于jdk1.7,目前在repl下javap还不work

发表评论

电子邮件地址不会被公开。 必填项已用*标注