1

假设我有一个名为 Scope 的类,它有一个名为 Variable 的嵌套类,我究竟如何使用javap -s来获取内部类的 JNI 签名?我试过做

javap -classpath <classpath> -s Scope$Variable

,但这似乎不起作用。它似乎只是让我得到相同的信息,就好像我只输入了“Scope”而不是“Scope$Variable”。

谢谢你的帮助

4

2 回答 2

4

如果您javap在 Linux/Unix 环境中运行,则$将由 shell 解释而不是javap. 因此它必须被逃脱。最简单的解决方案是:

javap -classpath <classpath> -s 'Scope$Variable'

如果没有引号,shell(我假设是 *sh 后代)将尝试$Variable用 environment variable 的内容替换该部分Variable。我假设不存在这样的变量,因此没有任何东西(如“空字符串”)被替换。因此javap只看到

javap -classpath <classpath> -s Scope

如果您从 Windows 运行命令,那么这不是问题,因为神奇的字符是%.

顺便说一句:我不知道为什么 JNI 会参与其中。

于 2012-07-14T21:30:17.443 回答
0

为我工作javap -s com.oracle.net.Sdp$SdpSocket::

Compiled from "Sdp.java"
class com.oracle.net.Sdp$SdpSocket extends java.net.Socket{
com.oracle.net.Sdp$SdpSocket(java.net.SocketImpl)   throws java.net.SocketExcept
ion;
  Signature: (Ljava/net/SocketImpl;)V
}
于 2012-07-12T04:21:27.567 回答