Fehler mit javah beim Schreiben von JNI in Scala mit Java 7

8

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     
Mike 19.05.2012, 23:52
quelle

1 Antwort

5

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

schauen %Vor%

}

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:

%Vor%

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.

    
Edmondo1984 19.07.2012, 08:51
quelle

Tags und Links