为什么javah需要字节码来生成JNI头?
这是一个令我困惑的问题为什么javah需要字节码来生成JNI头?,java,java-native-interface,javah,Java,Java Native Interface,Javah,这是一个令我困惑的问题javah需要一个字节码编译类的类路径,以便生成其头 但是有javac,它大概是从源代码中构建了一个AST,它也可能被javah使用。特别是因为本地方法很容易被发现 那么,为什么javah需要字节码呢?仅仅因为他们就是这样写的。我同意,它完全可以写在源代码上运行,但他们并没有这么做 它的编写方式有点有趣,如果你有源代码(先编译)或者没有源代码,就可以使用它;这意味着它的实现方式实际上更加灵活,而不是更少。没错,但另一方面,它使JNI构建过程变得更加复杂:/@fge不,它没有
javah
需要一个字节码编译类的类路径,以便生成其头
但是有javac
,它大概是从源代码中构建了一个AST,它也可能被javah
使用。特别是因为本地方法很容易被发现
那么,为什么
javah
需要字节码呢?仅仅因为他们就是这样写的。我同意,它完全可以写在源代码上运行,但他们并没有这么做
它的编写方式有点有趣,如果你有源代码(先编译)或者没有源代码,就可以使用它;这意味着它的实现方式实际上更加灵活,而不是更少。没错,但另一方面,它使JNI构建过程变得更加复杂:/@fge不,它没有。您有一个编译器,它将.java编译为.class;您有一个javah,它将.class处理为.c和.h。让javah成为编译器会带来它和javac之间分歧的风险。@EJP如果他们共享代码,就不会!但无论如何。。。我知道我必须处理它:/