2011-12-17 65 views
2

这是一个困惑我的问题。 javah需要一个字节码编译类的类路径,以便生成它的头文件。为什么javah需要字节码来生成JNI头文件?

但是有javac,它大概是从源代码中构建出一个AST,它也可能被javah使用。特别是因为本地方法很容易被发现。

那么,为什么javah需要字节码呢?

回答

5

只因为他们是这么写的。我同意,它绝对是可能已被写入源操作,但这不是他们做的。

书写方式的有些有趣的事情是,你可以使用它,如果你有源(由第一编译它),或者如果你有源;这意味着它的做法实际上是更多灵活,而不是更少。

+0

这是真的,但另一方面它使得JNI构建过程比它可能更复杂:/ – fge 2011-12-17 19:32:38

+0

@fge不,它不。你有一个编译器,它将.java编译为.class;你有一个javah,它处理.class到.c和.h。将javah编译为编译器会引入它与javac之间的分歧风险。 – EJP 2011-12-17 23:45:24

+0

@EJP不是如果他们分享他们的代码!但无论如何......我知道我必须处理它:/ – fge 2011-12-17 23:53:19

相关问题