For historical reasons, javah only accepts .class files.
However, in the previous incarnation as an extension of javadoc, and in its current incarnation as an extension of ajavc, it is only one step away from accepting source files.
With the .class file restriction, the build pipeline is serialized: compile class files, run javah, compile native code.
If the .class file restriction were lifted, the build pipeline could be parallized, compiling class files in parallel with running javah and compiling native code.
However, in the previous incarnation as an extension of javadoc, and in its current incarnation as an extension of ajavc, it is only one step away from accepting source files.
With the .class file restriction, the build pipeline is serialized: compile class files, run javah, compile native code.
If the .class file restriction were lifted, the build pipeline could be parallized, compiling class files in parallel with running javah and compiling native code.