In Java 6 konnte ich JNI in Scala gut gebrauchen. Ich hätte Code wie:
%Vor%Und dann würde ich laufen:
%Vor%Und ich würde meine Header-Dateien gut bekommen.
In Java 7 erhalte ich den folgenden Fehler:
%Vor%Es ist wie javah akzeptiert nicht mehr Dollarzeichen in Klassennamen, aber ich muss das Dollarzeichen in Scala verwenden, um das Äquivalent einer statischen Methode zu erhalten.
Als Referenz mit Java 6:
%Vor%Mit Java 7:
%Vor%Hat jemand Glück gehabt, Javah für JNI mit Scala in Java 7 zu benutzen?
Bearbeiten
Wurde als Fehler bei Ссылка
veröffentlicht Der beste Weg, um ein Verständnis dafür zu bekommen, ist, direkt über die OpenJDK-Website zu den Quellen zu gehen. Wenn wir auf com.sun.tools.javac.api.JavacTool
}
Sie können die problematische Zeile sehen:
%Vor%Sehen wir uns nun javax.lang.model.SourceVersion
an %Vor%Sie können also sehen, dass die Methode, von der erwartet wurde, dass sie wahr ist (aber stattdessen falsch zurückkehrt), ist:
%Vor% Und das Problem ist !Character.isJavaIdentifierPart(cp)
Wenn wir uns jetzt die Version 1.6 ansehen:
%Vor%Und die Version 1.7:
%Vor% Hier ist ein Refactoring aufgetreten, und wenn Sie sich CharacterData ansehen, stellen Sie fest, dass es einige Klassen zurückgibt, die bei der Erstellung von Java-Distributionen aus Vorlagen in /openjdk/make/tools/GenerateCharacter/CharacterData**.java.template
generiert werden:
Ich denke, du könntest versuchen, Java im Debug-Modus laufen zu lassen und zu sehen, was in den beiden Fällen passiert, und dann einen genauen Fehlerbericht an die OpenJDK-Leute schicken, weil der Bug eindeutig durch dieses Refactoring eingeführt wurde.