Heute versuchten wir ein JavaFX-Projekt zu erstellen. Die letzte Zeit hatten wir Adopt OpenJDK für die Java-Entwicklung verwendet. Aber wie wir heute feststellen mussten, hat Adopt OprnJDK kein OpenJFX dabei. Die Anleitungen um OpenJFX rein zu frickeln, ist sehr lang. Viel zu umständlich. Lösung? Einfach das OpenJDK von Amazon Corretto verwenden, dort ist Java FX gleich dabei.
Archiv der Kategorie: Software-Entwicklung
Mercurial und HTTPS: certificate verify failed
Heute wollte ich ein neues Repository auf Sourceforge klonen und pushen, per HTTPS. Das Kommando sah in etwa so aus:
hg clone https://amin@hg.code.sf.net/project
Leider gabs eine schlechte Rückmeldung:
Abbruch: Fehler: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
Was ist passiert? Der Mercurial-Server lässt verständlicherweise nur verschlüsselte Verbindungen zu. Und der Hg-Client soll auch nur mit vertrauenswürdigen Servern kommunizieren. Dafür ist ein kryptisches Zertifikat nötig. Anscheinend hat die Hg-Installation (entgegen der Anleitung) keine Python-Zertifikatedatei dabei, obwohl Mercurial ein Python-Programm ist. Ich konnte jedenfalls keine cacert.pem finden. Da ich aber noch eine separate Python-Installation habe, konnte ich auf diese Verweisen. Dazu muss man in der globalen Mercurial-Konfiguration diese Datei einmal angeben:
; in der %USERPROFILE%\Mercurial.ini [web] cacerts=C:\Python27\Lib\site-packages\pip\_vendor\requests\cacert.pem
Es muss übrigens nicht diese Cacerts-Datei sein, man kann auch eine Datei aus einem Webbrowser exportieren. Diese kann auch auf *.crt enden und man kann mehrere Zertifikate in einer Datei hinter einander anfügen.
Java – for-each rettet einen
Heute sollte ich einen Fehler im fremden Code heraus finden. Das Java-Programm warf folgende Exception aus:
java.util.ConcurrentModificationException
Tja, es wurde auf jeden Fall von einer ArrayList
-Collection geworfen. Meine erste Vermutung war, das zwei Threads auf dieser ArrayList schreiben. Also auf den thread-sicheren Vector umsteigen? Hat aber nichts geholfen.
Dateien in Mercurial ignorieren
Wenn man Mercurial (Hg) als Sourcecode Management System verwendet, will man keine automatisch erzeugten Dateien in das Repository schreiben. Zum Beispiel Backup-Dateien von Texteditoren (die mit der Tilde), Objektdateien von C oder C++ usw. Dazu legt man in das Projektverzeichnis eine Datei namens .hgignore
an, in der man die Dateien oder Verzeichnisse auflistet, die Hg ignorieren soll. Weiterlesen
FindBugs für Java
Ich will heute ein Java-Tool für statische Code-Analyse vorstellen. Weiterlesen