【问题标题】:Get JNI Signature for methods of nested classes获取嵌套类方法的 JNI 签名
【发布时间】:2023-03-07 16:07:01
【问题描述】:

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

javap -classpath <classpath> -s Scope$Variable

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

感谢您的帮助

【问题讨论】:

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


    【解决方案1】:

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

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

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

    javap -classpath <classpath> -s Scope
    

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

    顺便说一句:我不知道这里为什么会涉及到 JNI。

    【讨论】:

      【解决方案2】:

      为我工作: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-10
        • 2017-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-25
        • 2017-07-29
        • 1970-01-01
        相关资源
        最近更新 更多