Temurin-build: So aktualisieren Sie Zeitzonendaten mit AdoptOpenJDK

Erstellt am 25. Apr. 2019  ·  50Kommentare  ·  Quelle: adoptium/temurin-build

Ich habe versucht, Zeitzonendaten innerhalb des neuesten AdoptOpenJDK 11-Images zu aktualisieren, aber der tzupdater von Oracle scheint nicht zu funktionieren und stürzt mit einer Nullzeigerausnahme ab. Gibt es eine empfohlene Möglichkeit, Zeitzonen mit AdoptOpenJDK zu aktualisieren?

blocked bug

Hilfreichster Kommentar

java -Djava.vendor="Oracle Corporation" -verbose:class -jar "${PWD}/tzupdater.jar" -v -l "file://${PWD}/${RGTZ}"

Alle 50 Kommentare

Geschieht dies mit einer Adopt-Binärdatei außerhalb von Docker? Welche Fehlermeldung sehen Sie?

Ja, ich kann dieses Problem auf meinem Computer außerhalb von Docker neu erstellen. Die Befehlsausgabe (mit aktiviertem Ausführlichkeitsflag) lautet wie folgt:

$ java -jar resources/tzupdater.jar --location --force -v
Using https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz as source for tzdata bundle.
java.home: /Library/Java/JavaVirtualMachines/adoptopenjdk-12.jdk/Contents/Home
java.vendor: AdoptOpenJDK
java.version: 12
tzupdater version 2.2.0-b01
JRE tzdata version: tzdata2018g
Downloaded file to /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tz.tmp/tzdata.tar.gz
java.lang.NullPointerException
Exception in thread "main" com.sun.tools.tzupdater.TzRuntimeException: java.lang.NullPointerException
    at com.sun.tools.tzupdater.TimezoneUpdater.main(TimezoneUpdater.java:653)
Caused by: java.lang.NullPointerException
    at com.sun.tools.tzupdater.TimezoneUpdater.run(TimezoneUpdater.java:215)
    at com.sun.tools.tzupdater.TimezoneUpdater.main(TimezoneUpdater.java:634)

Ich bin mir nicht sicher, warum es meine Java-Version als 12 aufnimmt als:

$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.2+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.2+9, mixed mode)
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

@keirlawson Ah sieht aus, als ob Sie auf einem Mac laufen. Apple hat ein spezielles internes Tool, das die Standardeinstellung JAVA_HOME usw. festlegt.

Ich benutze ein Shell-Skript, um zwischen ihnen zu wechseln:

# List all of the Java's that are available
alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'

# Swap between Java's
function use_java() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    export PATH=$JAVA_HOME/bin:$PATH
    java -version
}

Aber ja, die NPE ist ärgerlich - wir müssen uns damit befassen - kein Docker-Problem, also werde ich das verschieben.

Ich habe mich ein wenig damit befasst und einige Dinge herausgefunden, die zu beachten sind.

Oracle TZ Updater hat die folgenden Informationen auf seiner Download-Seite;

System Anforderungen

Das TZUpdater-Tool unterstützt alle derzeit unterstützten Versionen von Oracle JDK und JRE auf allen unterstützten Plattformen. Der Eigenschaftswert von java.vendor muss Sun Microsystems Inc. oder Oracle Corporation oder BEA Systems, Inc. Sein.

Was mich denken lässt, dass es sowieso nicht funktioniert.

Es gibt auch ein anderes Tool von Azul Systems (verfügbar unter https://www.azul.com/products/open-source-tools/ziupdater-time-zone-tool/), das unter GPLv2 veröffentlicht wird, aber unter jdk11 mit nicht ausgeführt werden kann ein Text von [ziupdater]unsupported Java version 11.0.3 .

Wenn mir keine Informationen fehlen, müssen wir hier unsere Optionen besprechen.

Interessant - greifen wir auf die Azuls-Quelle zu? Hoffentlich können wir gabeln / flicken
das mit Adopt zu arbeiten

Am Samstag, den 27. April 2019 um 12:13 Uhr schrieb Ali Ince [email protected] :

Ich habe mich ein wenig damit befasst und einige Dinge herausgefunden, die zu beachten sind.

Oracle TZ Updater hat die folgenden Informationen auf seiner Download-Seite;

System Anforderungen

Das TZUpdater-Tool unterstützt alle derzeit unterstützten Versionen von Oracle
JDK und JRE auf allen unterstützten Plattformen. Der Eigenschaftswert java.vendor
muss Sun Microsystems Inc. oder Oracle Corporation oder BEA Systems, Inc. sein.

Was mich denken lässt, dass es sowieso nicht funktioniert.

Es gibt auch ein anderes Tool von Azul Systems, das unter GPLv2 veröffentlicht wird
Kann jedoch unter jdk11 nicht mit einem Text nicht unterstützter Version ausgeführt werden.

Wenn mir keine Informationen fehlen, müssen wir meiner Meinung nach unsere Optionen besprechen
Hier.

- -
Sie erhalten dies, weil Sie diesen Thread abonniert haben.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/AdoptOpenJDK/openjdk-build/issues/1057#issuecomment-487277125 ,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AABME2D2GVKBSNWHNGDOXOLPSQYNFANCNFSM4HIV2ISA
.

>

Prost, Martijn (Gesendet von Google Mail Mobile)

Ja, ich habe die Azul gefunden, konnte aber die Quelle nirgendwo finden, obwohl sie angeblich Open Source ist. Wenn jemand einen Kontakt bei Azul hat, kann er ihn vielleicht aus ihm herausholen?

Ich bin mir immer noch nicht sicher, ob Azul's ZIUpdater mit Quellcode veröffentlicht wird oder nicht, da er diese Informationen am Ende der Seite enthält, die ich zuvor verlinkt habe

Bitte senden Sie uns Fragen / Probleme / Quell-Snapshot-Anfragen an [email protected]

Aber theoretisch können wir nach den Quellcodes fragen. Haben wir Kontakte bei Azul @karianna?

Ja, ich werde sie jetzt anpingen.

Offenbar verfügt OpenJDK möglicherweise bereits über ein Dienstprogramm zur Lösung eines Teils des Problems, das jedoch nicht allgemein bekannt ist: https://github.com/akashche/tzdbgen

IBM hat einen TZUpdater. Sprach kurz mit Tim über Optionen für Open Source. Wir ermitteln.

Azul diskutiert auch darüber

Hallo, gibt es etwas Neues zu diesem Problem?

Vielen Dank

@ SueChaplain Gibt es Neuigkeiten von Ihrer Seite? Ich werde Azul offiziell verfolgen.

Haben formelle Anfrage an Azul gesendet

Ich habe auch das andere von @keirlawso vorgeschlagene Tool ausprobiert. Ich verwende adoptopenjdk 12 und es scheint zu funktionieren, aber es ist nicht klar, wie die zusätzlichen tz-Dateien im Zusammenhang mit der openjdk-Version übergeben werden sollen. Das Tool verwendet also nur die Standarddateien, sodass es eine unvollständige Dokumentation oder Funktionen enthält. Ich habe auch ein Github-Problem für dieses Tool geöffnet.

@karianna - Diskussionen, die hier noch laufen, um die Originalität des Codes zu bestätigen. Wird stoßen.

Wir hoffen, dass bald ein Zupdater verfügbar sein wird. Wir haben eine kritische Zeitzonen-Cloud-Plattform mit Zahlungen und Rechnungen. Die Zeitzone ist ein wesentlicher Bestandteil unserer Microservices.

Nur um die Community zu informieren:
Der Azul tzupdater funktioniert nur mit adoptopenjdk 8.
Ich habe es mit unseren Docker-Containern mit der letzten iana db: 2019a mit dieser Version versucht:

https://web.cs.ucla.edu/~eggert/tz/release

Die offiziellen IANA tar.gz-Datenbanken enthalten Fehler, daher verwenden wir diesen.
Um dieses Problem zu beheben, müssen wir vorerst ein Downgrade auf Java 8 durchführen. (In unserem Fall ist die Zeitzone wichtiger als die Java-Version selbst.)

Vielleicht kann Azul die Unterstützung für Java 11 und 12 überprüfen, damit das Tool mit adoptopenjdk korrekt funktioniert, ohne große Änderungen vorzunehmen oder viel Code zu überschreiben.

Offenbar verfügt OpenJDK möglicherweise bereits über ein Dienstprogramm zur Lösung eines Teils des Problems, das jedoch nicht allgemein bekannt ist: https://github.com/akashche/tzdbgen

Siehe auch: ZoneRulesBuilder.java im Pfad /make/src/classes/build/tools/tzdb/ von jdk8

Gibt es ein Update für die Azul- oder IBM-Lösungen?

@karianna - Diskussionen, die hier noch laufen, um die Originalität des Codes zu bestätigen. Wird stoßen.

Hallo Sue,

Hattest du noch mehr Glück?

Dies scheint auf Zulu, OpenJDK & Corretto zu funktionieren (oder zumindest wirft es nicht, hat weder Daten noch Zeitzonen getestet).

https://bell-sw.com/pages/iana-updater/

Es wird jedoch das "Nachhut" -Format verwendet. Sie müssen also die Datei tzdata.tar.gz selbst erstellen.

git clone https://github.com/eggert/tz
git checkout 2019b
make tarballs

java -jar IANAUpdater.jar -t ${JAVA_HOME} -z  tzdata2019b-rearguard.tar.tz

Die letzte Version von oracle tzupdater funktioniert mit openjdk, aber nicht mit zulu oder corretto.
https://github.com/akashche/tzdbgen scheint verlassen, und es wirft.
ziupdater von azul wirft auch.
Aber das Kopieren / Einfügen von build.tools.tzdb von java.net/openjdk in ein Projekt scheint zu funktionieren.

Alle Java "tz-parser" verwenden das "Nachhut" -Format. IANA veröffentlicht jedoch nur das "Avantgarde" -Format.

@ Paulocesarcuneo

Bitte führen Sie make rearguard_tarballs anstelle von make im Ordner tzdb-xxx (vollständige Verteilung der IANA-Zeitzonendatenbank) aus, um eine gültige Eingabe für tzdbgen , TZUpdater oder IANAUpdater zu generieren

@karianna - @ andrew-m-leonard und das Team haben einen Blick darauf geworfen und können Sie wissen lassen, wie das geht.

Hallo Sue,

Hattest du noch mehr Glück?

Der IBM Timezone Updater unterstützt derzeit nur Aktualisierungen von IBM Java 1.4.2, 5.0, 6, 7 und 8. Er unterstützt keine Aktualisierungen von OpenJDK8 oder OpenJDK9 + (sowohl für Hotspot- als auch für OpenJ9-Varianten). Wir untersuchen derzeit, was getan werden muss, damit der Timezone Updater mit diesen Versionen funktioniert. Wir halten Sie über den Fortschritt dieser Arbeit auf dem Laufenden.

Hallo, es scheint, dass die Azul ziupdater jar Version 1.0.2.2 jetzt die Zeitzonendaten korrekt aktualisiert, wenn eine mit der Nachhut formatierte 2019b-Zeitzonendatei mit Java 11 verwendet wird

@djphillyp Funktioniert der Azul-Updater auch für jdk8?

Lesen Sie einfach das Dokument! es unterstützt jdk8 :-)

@karianna Da Azul bereits über einen öffentlich verfügbaren Zeitzonen-Updater verfügt, der mit Java 11 funktioniert, gibt es einen Grund, den IBM Timezone-Updater zu verwenden? Die einzige Funktion des IBM Tools, die nicht im Azul-Paket enthalten ist, ist die Möglichkeit, eine Reihe von Java-Installationen auf einer Festplatte aus einer Einstellungsdatei zu aktualisieren und die Einstellungsdatei optional mithilfe einer Reihe von Einschluss- / Ausschlusskriterien zu generieren.

Für alle, die eine spätere Version des "Nachhut" -Formats wünschen, können Sie Ihr eigenes erstellen. Siehe https://stackoverflow.com/questions/56908541/update-to-tzdata2019b-is-failing-tzupdater-version-2-2-0-b01

@karianna Da Azul bereits über einen öffentlich verfügbaren Zeitzonen-Updater verfügt, der mit Java 11 funktioniert, gibt es einen Grund, den IBM Timezone-Updater zu verwenden? Die einzige Funktion des IBM Tools, die nicht im Azul-Paket enthalten ist, ist die Möglichkeit, eine Reihe von Java-Installationen auf einer Festplatte aus einer Einstellungsdatei zu aktualisieren und die Einstellungsdatei optional mithilfe einer Reihe von Einschluss- / Ausschlusskriterien zu generieren.

Ich wusste nicht, dass dies öffentlich verfügbar war? Ich musste den Quellcode manuell von ihnen anfordern ...

Öffentlich verfügbare Binärdatei. Brauchen wir die Quelle?

Öffentlich verfügbare Binärdatei. Brauchen wir die Quelle?

Ja, wir brauchen die Quelle :-) - Nehmen Sie die Richtlinie an, keine mysteriösen Fleischbauten zu haben.

Ich könnte mich irren, aber könnte dieser Code nicht umbrochen werden, um die Funktionalität bereitzustellen?

https://github.com/openjdk/jdk/tree/0c3f9c6012a5878bc9275a5abad6b3d044a30ba7/make/jdk/src/classes/build/tools/tzdb

Ich stelle auch fest, dass kürzlich eine Verpflichtung eingegangen wurde, das "Avantgarde" -Format zu unterstützen, was ebenfalls die Dinge vereinfachen würde, da die von IANA veröffentlichten Dateien direkt wieder verwendet werden könnten!

@ Paulocesarcuneo

Bitte führen Sie make rearguard_tarballs anstelle von make im Ordner tzdb-xxx (vollständige Verteilung der IANA-Zeitzonendatenbank) aus, um eine gültige Eingabe für tzdbgen , TZUpdater oder IANAUpdater zu generieren

Ergebnis:

make: * Keine Regel, um das Ziel 'posteriorguard_tarballs' zu machen. Halt.

@ Paulocesarcuneo
Ergebnis:
make: * Keine Regel, um das Ziel 'posteriorguard_tarballs' zu machen. Halt.

Stellen Sie sicher, dass Sie das vollständige Bundle mit Quellen heruntergeladen haben. Next hat gerade für mich gearbeitet:

wget https://data.iana.org/time-zones/releases/tzdb-2019b.tar.lz
lzip -d tzdb-2019b.tar.lz
tar xf tzdb-2019b.tar
cd tzdb-2019b /
mache Nachhut_Tarballs

@ Paulocesarcuneo
Ergebnis:
make: * Keine Regel, um das Ziel 'posteriorguard_tarballs' zu machen. Halt.

Stellen Sie sicher, dass Sie das vollständige Bundle mit Quellen heruntergeladen haben. Next hat gerade für mich gearbeitet:

wget https://data.iana.org/time-zones/releases/tzdb-2019b.tar.lz
lzip -d tzdb-2019b.tar.lz
tar xf tzdb-2019b.tar
cd tzdb-2019b /
mache Nachhut_Tarballs

Gleicher Fehler. :(

@paulocesarcuneo dann ist etwas anders mit Ihrer Umgebung. Versuchen Sie docker run ubuntu

@paulocesarcuneo @sgrinev Mein Problem ist Ubuntu 16.04, Lösung:

make AWK=gawk rearguard_tarballs

java -Djava.vendor="Oracle Corporation" -verbose:class -jar "${PWD}/tzupdater.jar" -v -l "file://${PWD}/${RGTZ}"

Auf diese Weise habe ich mein Problem gelöst:

sudo java -Djava.vendor="Oracle Corporation" -jar "${PWD}/tzupdater.jar" -l

irgendein Update hier?

Heute hat es die Systeme wieder kaputt gemacht. Oracle tzupdater in Version 2.3.1 mag diese neue Version von 2020b nicht und schlägt fehl

https://stackoverflow.com/questions/64254417/tzupdate-failures-with-2020b

Vielleicht ist dies der richtige Zeitpunkt, um es zu schaffen

@JigarJoshi Es sieht so aus, als hätte Oracle die Version 2.3.2 veröffentlicht, die angesichts der

@keirlawson kannst du es auch versuchen?

@ andrew-m-leonard ja das problem ist mit 2.3.2 behoben.

Halten Sie es immer noch für eine gute Idee, die OpenJDK-Version des Zeitzonen-Updater-Tools hinzuzufügen?

Halten Sie es immer noch für eine gute Idee, die OpenJDK-Version des Zeitzonen-Updater-Tools hinzuzufügen?

Es wäre großartig - ich denke, das Beste wäre, Oracle sehr höflich zu fragen, ob sie darüber nachdenken würden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen