Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么javah需要字节码来生成JNI头?_Java_Java Native Interface_Javah - Fatal编程技术网

为什么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如果他们共享代码,就不会!但无论如何。。。我知道我必须处理它:/