1

Variable という名前のネストされたクラスを持つ Scope という名前のクラスがあるとjavap -sします。内部のクラスの JNI シグネチャを取得するにはどうすればよいでしょうか。やってみました

javap -classpath <classpath> -s Scope$Variable

、しかし、これはうまくいかないようです。「Scope$Variable」ではなく「Scope」と入力した場合と同じ情報が得られるようです。

助けてくれてありがとう

4

2 に答える 2

4

javapLinux/Unix 環境で実行している場合、 は では$なくシェルによって解釈されjavapます。したがって、エスケープする必要があります。最も簡単な解決策は次のとおりです。

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

引用符がないと、シェル (*sh の子孫を想定しています) は、その$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 に答える