Pyjnius: Inkompatibilität mit Java 9 - JRE-Pfad geändert

Erstellt am 19. Okt. 2017  ·  11Kommentare  ·  Quelle: kivy/pyjnius

PyJnius sucht den Weg

/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/jre/lib/server/libjvm.dylib

aber der jre Ordner existiert in dieser Hierarchie nicht mehr und er sollte danach suchen

/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib/server/libjvm.dylib

bug

Hilfreichster Kommentar

Es ist nicht nur ein OSX-Problem, wenn Sie open-jdk verwenden, der jre-Ordner existiert nicht mehr. Jede geöffnete jdk-Version >= 9 hat den jre-Ordner nicht mehr. Siehe http://openjdk.java.net/jeps/220 seit Java 9 wurde die Ordnerhierarchie neu strukturiert. Der Pfad jre/lib/amd64/server/libjvm.so ist nicht mehr gültig ( https://github.com/kivy/pyjnius/blob/1cbfef23fb9fcb0f15dcbfd8f4cd1fc9a54986b6/setup.py#L163 ).

Alle 11 Kommentare

Sieht so aus, als ob dies nur eine kleine Änderung unter https://github.com/kivy/pyjnius/blob/master/setup.py#L82 bedarf, aber ich bin mir nicht sicher, was genau anders sein sollte (z. B. ist dies eine neue Bedingung, wenn framework hat einen bestimmten Wert?). Könntest du die Ausgabe von /usr/libexec/java_home posten?

Ich verwende Mac OS 10.13 mit Java vom neuesten brew cask install java .

$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home

Als Randnotiz, in der Vergangenheit mussten Sie mit der Option -v /usr/libexec/java_home -v 1.8 tun, aber jetzt müssen Sie /usr/libexec/java_home -v 9 tun. Sieht so aus, als hätten sie sich einem neuen Versionierungsschema verschrieben.

Hallo @inclement , ich komme gerade darauf zurück. War dieses Feedback genug, um ein Update vorzunehmen?

Leute, irgendein Update?

Es ist nicht nur ein OSX-Problem, wenn Sie open-jdk verwenden, der jre-Ordner existiert nicht mehr. Jede geöffnete jdk-Version >= 9 hat den jre-Ordner nicht mehr. Siehe http://openjdk.java.net/jeps/220 seit Java 9 wurde die Ordnerhierarchie neu strukturiert. Der Pfad jre/lib/amd64/server/libjvm.so ist nicht mehr gültig ( https://github.com/kivy/pyjnius/blob/1cbfef23fb9fcb0f15dcbfd8f4cd1fc9a54986b6/setup.py#L163 ).

Dieser Fehler wird sich auch auf die Verwendung von Java >= 9 mit den bald veröffentlichten conda-forge-Builds auswirken: https://github.com/conda-forge/openjdk-feedstock/pull/34 , https:// github.com/conda-forge/openjdk-feedstock/pull/35 , https://github.com/conda-forge/openjdk-feedstock/pull/36

Pyjnius 1.1.4 erfordert, dass DYLD_LIBRARY_PATH mit JRE 1.8 deaktiviert wird, unabhängig davon, ob der Wert korrekt ist oder nicht. Es ist zwar nicht abwärtskompatibel, aber es ist gut, sich in der Umwelt nicht mehr darum kümmern zu müssen.

@rhoerbe Könnten Sie bitte eine offizielle Dokumentation / ein Änderungsprotokoll verlinken, warum diese Änderung stattgefunden hat. Ich bin gespannt, ob es andere Auswirkungen auf das gesamte System und nicht nur auf Java hat.

Das Problem trat innerhalb der Pycharm-IDE in einem ziemlich sperrigen Projekt auf, das nicht geeignet ist, das Problem zu isolieren. Beim Erstellen eines separaten Demo-Repos konnte ich es nicht reproduzieren.

Jetzt bin ich ein paar Commits voraus, habe die Django-Einstellungen geändert und kann das Problem in meinem Hauptprojekt nicht mehr reproduzieren. Es gibt ein paar Kombinationen, die man testen kann, um sie zu reproduzieren - ich habe aufgegeben.

Was ich beschreiben kann, ist, dass das Herabstufen von pyjnius von 1.1.4 auf 1.1.3 das Problem behoben hat. Um es zu reproduzieren, scheint es jedoch andere Faktoren als JRE 1.8 und DYLD_LIBRARY_PATH zu geben.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen