From e7151ad7b2e41cbd823ddd362c907c4e0db1d39b Mon Sep 17 00:00:00 2001 From: Jan S Date: Wed, 23 Feb 2022 10:27:04 +0100 Subject: [PATCH] fix(gui): IllegalArgumentException when saving project to a different directory than the APK file (#1387)(PR #1388) --- .../jadx/gui/utils/RelativePathTypeAdapter.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/jadx-gui/src/main/java/jadx/gui/utils/RelativePathTypeAdapter.java b/jadx-gui/src/main/java/jadx/gui/utils/RelativePathTypeAdapter.java index 96f653f1..3df89468 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/RelativePathTypeAdapter.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/RelativePathTypeAdapter.java @@ -5,12 +5,18 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Objects; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; public class RelativePathTypeAdapter extends TypeAdapter { + + private static final Logger LOG = LoggerFactory.getLogger(RelativePathTypeAdapter.class); + private final Path basePath; public RelativePathTypeAdapter(Path basePath) { @@ -23,8 +29,14 @@ public class RelativePathTypeAdapter extends TypeAdapter { out.nullValue(); } else { value = value.toAbsolutePath().normalize(); - String relativePath = basePath.relativize(value).toString(); - out.value(relativePath); + Path resultPath; + try { + resultPath = basePath.relativize(value); + } catch (IllegalArgumentException e) { + LOG.warn("Unable to build a relative path to {} - using absolute path", value); + resultPath = value; + } + out.value(resultPath.toString()); } } -- GitLab