diff --git a/key.core/src/main/java/de/uka/ilkd/key/proof/io/UrlRuleSource.java b/key.core/src/main/java/de/uka/ilkd/key/proof/io/UrlRuleSource.java index f921f77d6e..5144c38971 100644 --- a/key.core/src/main/java/de/uka/ilkd/key/proof/io/UrlRuleSource.java +++ b/key.core/src/main/java/de/uka/ilkd/key/proof/io/UrlRuleSource.java @@ -61,11 +61,11 @@ public Path file() { try { return Paths.get(uri); } catch (FileSystemNotFoundException e) { - URI rootFs = URI.create(StringUtil.takeUntil(uri.toString(), "\\!")); - String internal = StringUtil.takeAfter(uri.toString(), "\\!"); - try (FileSystem zipfs = FileSystems.newFileSystem(rootFs, new HashMap<>())) { - return zipfs.getPath(internal); - } + URI rootFs = URI.create(StringUtil.takeUntil(uri.toString(), "!")); + String internal = StringUtil.takeAfter(uri.toString(), "!"); + // keep the file system open. + FileSystem zipfs = FileSystems.newFileSystem(rootFs, new HashMap<>()); + return zipfs.getPath(internal); } } catch (URISyntaxException | IOException e) { throw new RuntimeException(e); diff --git a/key.util/src/main/java/org/key_project/util/java/StringUtil.java b/key.util/src/main/java/org/key_project/util/java/StringUtil.java index fccb010cca..c4df641e72 100644 --- a/key.util/src/main/java/org/key_project/util/java/StringUtil.java +++ b/key.util/src/main/java/org/key_project/util/java/StringUtil.java @@ -504,14 +504,14 @@ public static String move(@NonNull String text, int line, int charPositionInLine /// Returns the string until the first match of the given regex. public static String takeUntil(String content, String regex) { - var array = content.split(regex, 1); + var array = content.split(regex, 2); return array[0]; } /// Returns the string after the first match of the given regex. public static String takeAfter(String content, String regex) { - var array = content.split(regex, 1); - return array[0]; + var array = content.split(regex, 2); + return array[1]; }