CreateProcess failed: The system cannot find the file specified.

Beim Bau der Bibliothek skia unter Windows bekam ich diese Fehlermeldung:

[419/2871] copy ../../third_party/externals/icu/common/icudtl.dat icudtl.dat
FAILED: icudtl.dat
python .../skia/build/skia/gn/cp.py ../../third_party/externals/icu/common/icudtl.dat icudtl.dat
CreateProcess failed: The system cannot find the file specified.
ninja: fatal: ReadFile: The handle is invalid.

Wie es sich herausgestellt hat, lag das Problem darin, dass ninja versucht hat, Python aufzurufen, Python aber nicht gefunden hat. Genauer gesagt, python.exe.

Um die python.exe aus den depot_tools aufrufen zu können, muss man vorher erstmal das Skript update_depot_tools.bat aufrufen (wenn man das vorher nicht schon getan hat). Danach sollte sich eine python.exe in dem Ordner <some\path>\depot_tools\win_tools-2_7_6_bin\python\bin befinden. Der Pfad kann sich in der Zukunft vermutlich ändern. Jedenfalls war das bei mir der Fall. Diesen Pfad muss man noch in der Umgebungsvariable PATH hinzufügen, z.b. in einem Batch-Skript mit

set "PATH=%PATH%;<some\path>\depot_tools\win_tools-2_7_6_bin\python\bin"

Danach sollte der Fehler verschwunden sein.

InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

Meine Ausgangssituation war folgende: Ich hatte eine Ubuntu 18.04 Maschine mit Jenkins darauf. Jenkins war frisch installiert. Nun wollte ich neue Plugins installieren, also bin ich auf die Seite des Plugin-Managers gegangen. Dort habe ich auf den Button Check now geklickt und prompt kam dann diese Fehlermeldung:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
at java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200)
at java.security.cert.PKIXParameters.(PKIXParameters.java:120)
at java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104)
at sun.security.validator.PKIXValidator.(PKIXValidator.java:89)
Caused: java.lang.RuntimeException: Unexpected error
at sun.security.validator.PKIXValidator.(PKIXValidator.java:91)
at sun.security.validator.Validator.getInstance(Validator.java:179)
at sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:312)

Wie ich herausgefunden habe, war das Problem, dass unter Ubuntu 18.04 und Debian, die cacerts-Datei für Java 9, 10 und 11 das Format pkcs12 benutzt. Frühere Java Versionen haben aber die Version jks benutzt. Das pkcs12-Format verlangt aber ein Passwort, was standardmäßig changeit lautet. Bei mir musste ich nun folgendes machen:
In der /etc/default/jenkins nach der Zeile suchen, die mit JAVA_ARGS anfängt.
Dort dann einfach -Djavax.net.ssl.trustStorePassword=changeit hinzufügen. Bei mir sieht das dann so aus:

JAVA_ARGS=”-Djava.awt.headless=true -Djavax.net.ssl.trustStorePassword=changeit”

Und dann Jenkins neustarten: sudo systemctl restart jenkins

Wenn man nichts falsch gemacht hat, sollte man nun im Plugin-Manager auf Check now klicken können ohne das diese Fehlermeldung nochmals auftaucht.

Quellen: