【问题标题】:I am trying javap -p classname on scala class but getting error in REPL我在 scala 类上尝试 javap -p classname 但在 REPL 中出错
【发布时间】:2019-01-13 13:21:23
【问题描述】:
scala> class Department( val departmentId: Int, val departmentName: String)
defined class Department
scala> javap -p Department
<console>:12: error: not found: value javap
       javap -p Department
       ^
<console>:12: error: not found: value p
       javap -p Department
              ^

【问题讨论】:

  • 您尝试做的事情没有任何意义。 Scala REPL 评估 scala 代码片段,它不知道任何关于 javap 或通常命令行上可用的任何其他外部命令的信息。您可以使用:sh 调用shell 命令,但在这里也无济于事,因为REPL 在编译输入时不会生成任何类似Department.class 的文件,它会将Department 类的表示形式保留在内存中。不过,您可以使用:javap REPL 命令。
  • 感谢您的快速回复!!我在想类部门已经编译,当我使用 javap 时它应该显示类信息。

标签: scala read-eval-print-loop javap scala-repl


【解决方案1】:

您不能像在普通 shell 中一样调用 javap 程序,因为 Scala REPL 不是 shell。

您可以使用内置命令:javap

scala> class Department( val departmentId: Int, val departmentName: String)
defined class Department

scala> :javap -p Department
Compiled from "<console>"
public class $line4.$read$$iw$$iw$Department {
  private final int departmentId;
  private final java.lang.String departmentName;
  public int departmentId();
  public java.lang.String departmentName();
  public $line4.$read$$iw$$iw$Department(int, java.lang.String);
}

来自 REPL :help

:javap &lt;path|class&gt;反汇编文件或类名

【讨论】:

  • 现在出现另一个错误。失败:没有可用的 javap 工具:scala.tools.nsc.interpreter.JavapClass$JavapTool6 初始化失败。
  • @MayankKishore 然后检查 java 版本。难道你正在使用一些非常古老的 scala 解释器? Question with very similar error.
猜你喜欢
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多