假设我有一个名为 Scope 的类,它有一个名为 Variable 的嵌套类,我究竟如何使用javap -s
来获取内部类的 JNI 签名?我试过做
javap -classpath <classpath> -s Scope$Variable
,但这似乎不起作用。它似乎只是让我得到相同的信息,就好像我只输入了“Scope”而不是“Scope$Variable”。
谢谢你的帮助
假设我有一个名为 Scope 的类,它有一个名为 Variable 的嵌套类,我究竟如何使用javap -s
来获取内部类的 JNI 签名?我试过做
javap -classpath <classpath> -s Scope$Variable
,但这似乎不起作用。它似乎只是让我得到相同的信息,就好像我只输入了“Scope”而不是“Scope$Variable”。
谢谢你的帮助
如果您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 会参与其中。
为我工作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
}