获取嵌套类方法的 JNI 签名

KWJ*_*104 1 java java-native-interface command-line

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

javap -classpath <classpath> -s Scope$Variable

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

谢谢你的帮助

A.H*_*.H. 5

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

javap -classpath <classpath> -s 'Scope$Variable'
Run Code Online (Sandbox Code Playgroud)

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

javap -classpath <classpath> -s Scope
Run Code Online (Sandbox Code Playgroud)

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

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