Archiv der Kategorie: Software-Entwicklung

Programmierung und Tools.

OpenJDK mit Java FX

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.

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.

Weiterlesen

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