Variable という名前のネストされたクラスを持つ Scope という名前のクラスがあるとjavap -s
します。内部のクラスの JNI シグネチャを取得するにはどうすればよいでしょうか。やってみました
javap -classpath <classpath> -s Scope$Variable
、しかし、これはうまくいかないようです。「Scope$Variable」ではなく「Scope」と入力した場合と同じ情報が得られるようです。
助けてくれてありがとう
Variable という名前のネストされたクラスを持つ Scope という名前のクラスがあるとjavap -s
します。内部のクラスの JNI シグネチャを取得するにはどうすればよいでしょうか。やってみました
javap -classpath <classpath> -s Scope$Variable
、しかし、これはうまくいかないようです。「Scope$Variable」ではなく「Scope」と入力した場合と同じ情報が得られるようです。
助けてくれてありがとう
javap
Linux/Unix 環境で実行している場合、 は では$
なくシェルによって解釈されjavap
ます。したがって、エスケープする必要があります。最も簡単な解決策は次のとおりです。
javap -classpath <classpath> -s 'Scope$Variable'
引用符がないと、シェル (*sh の子孫を想定しています) は、その$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
}