获取嵌套类方法的JNI签名

时间:2012-07-12 02:51:32

标签: java command-line java-native-interface

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

javap -classpath <classpath> -s Scope$Variable

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

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

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

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

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

javap -classpath <classpath> -s Scope

如果从Windows运行命令,那么这不是问题,因为神奇的角色将是%

BTW:我不知道为什么JNI会参与其中。

答案 1 :(得分: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
}