diff --git a/main/ant-kit/src/main/resources/build.xml b/main/ant-kit/src/main/resources/build.xml
index d8b6bf5c4..7ed445448 100644
--- a/main/ant-kit/src/main/resources/build.xml
+++ b/main/ant-kit/src/main/resources/build.xml
@@ -38,8 +38,6 @@
-
-
diff --git a/main/launcher/src/main/java/org/cryptomator/launcher/Cryptomator.java b/main/launcher/src/main/java/org/cryptomator/launcher/Cryptomator.java
index 171447c6c..8a97e336d 100644
--- a/main/launcher/src/main/java/org/cryptomator/launcher/Cryptomator.java
+++ b/main/launcher/src/main/java/org/cryptomator/launcher/Cryptomator.java
@@ -37,6 +37,8 @@ public class Cryptomator {
}
} catch (IOException e) {
LOG.error("Failed to initiate inter-process communication.", e);
+ } catch (Throwable e) {
+ LOG.error("Error during startup", e);
}
System.exit(0); // end remaining non-daemon threads.
}
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/WelcomeController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/WelcomeController.java
index 72e6e7fc2..353576862 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controllers/WelcomeController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/WelcomeController.java
@@ -11,10 +11,12 @@ package org.cryptomator.ui.controllers;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.nio.charset.StandardCharsets;
-import java.time.Duration;
import java.util.Comparator;
import java.util.Map;
import java.util.Optional;
@@ -36,9 +38,6 @@ import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.layout.VBox;
-import jdk.incubator.http.HttpClient;
-import jdk.incubator.http.HttpRequest;
-import jdk.incubator.http.HttpResponse;
import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.ui.l10n.Localization;
@@ -132,25 +131,33 @@ public class WelcomeController implements ViewController {
checkForUpdatesIndicator.setVisible(true);
Tasks.create(() -> {
String userAgent = String.format("Cryptomator VersionChecker/%s %s %s (%s)", applicationVersion.orElse("SNAPSHOT"), SystemUtils.OS_NAME, SystemUtils.OS_VERSION, SystemUtils.OS_ARCH);
- HttpClient client = HttpClient.newHttpClient();
- HttpRequest request = HttpRequest.newBuilder()
- .GET()
- .uri(new URI("https://api.cryptomator.org/updates/latestVersion.json"))
- .header("User-Agent", userAgent)
- .timeout(Duration.ofSeconds(5))
- .build();
- return client.send(request, HttpResponse.BodyHandler.asString(StandardCharsets.UTF_8));
+ URL url = URI.create("https://api.cryptomator.org/updates/latestVersion.json").toURL();
+ HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+ conn.addRequestProperty("User-Agent", userAgent);
+ conn.connect();
+ try {
+ if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
+ return Optional.empty();
+ }
+ try (InputStream in = conn.getInputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream()) {
+ in.transferTo(out);
+ return Optional.of(out.toByteArray());
+ }
+ } finally {
+ conn.disconnect();
+ }
}).onSuccess(response -> {
- if (response.statusCode() == 200) {
+ response.ifPresent(bytes -> {
Gson gson = new GsonBuilder().setLenient().create();
- Map map = gson.fromJson(response.body(), new TypeToken