javah
ist seit JDK 8 veraltet und wird / wird in JDK 10 entfernt und laut JEP 313 und der veraltete Text javac
mit dem Flag -h
sollten stattdessen verwendet werden:
Warnung: Das Tool
javah
soll in der nächsten großen JDK-Version entfernt werden. Das Tool wurde durch die Option "-h" ersetzt, die zujavac
in JDK 8 hinzugefügt wurde. Benutzern wird empfohlen, zur Verwendung der Optionjavac
'-h "zu migrieren. Weitere Informationen finden Sie auf der javac man-Seite.
Das Problem ist, dass javah
auf kompilierten .class
-Dateien arbeitet, während javac
auf Quelldateien (d. h. .java
-Dateien) arbeitet.
javah
funktioniert gut mit Kotlin und external
Funktionen, da alles als Java-Bytecode kompiliert wird, aber da es bei der Verwendung von Kotlin keine Java-Quelldateien gibt, sehe ich keine Möglichkeit, dass javac -h
funktionieren könnte.
Gibt es eine javah
Ersetzung oder eine Umgehung für Kotlin?
Bis Kotlin beginnt, JDK10-spezifischen Bytecode zu generieren, können Sie javah
tool von JDK 9 oder niedriger für die kompilierten Kotlin-Klassen verwenden.
Und selbst danach können Sie external
functions mit jvmTarget=1.8
kompilieren und javah
für die resultierenden Klassen verwenden.