[
https://issues.apache.org/jira/browse/GROOVY-10519?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17501094#comment-17501094
]
Paul King commented on GROOVY-10519:
------------------------------------
Good catch. Proposed PR:
https://github.com/apache/groovy/pull/1697
> v9 ClassFinder closes existing FileSystems that it doesn't own
> --------------------------------------------------------------
>
> Key: GROOVY-10519
> URL: https://issues.apache.org/jira/browse/GROOVY-10519
> Project: Groovy
> Issue Type: Bug
> Components: groovy-runtime
> Affects Versions: 3.0.10, 4.0.1
> Reporter: John Engelman
> Priority: Major
> Time Spent: 10m
> Remaining Estimate: 0h
>
> {noformat}
> org.codehaus.groovy.vmplugin.v9.ClassFinder
> private static FileSystem newFileSystem(URI uri) throws IOException {
>
> try {
> return FileSystems.newFileSystem(uri, Collections.emptyMap());
> } catch (FileSystemAlreadyExistsException e) {
> return FileSystems.getFileSystem(uri);
> }
> }
> private static Map<String, Set<String>> find(URI uri, String prefix, String
> packageName, boolean recursive) {
> boolean wfs = "file".equals(uri.getScheme());
> if (wfs) prefix = prefix.replace("/", File.separator);
>
> final String sepPatten = Pattern.quote(wfs ? File.separator : "/");
>
> final int prefixElemCnt = prefix.trim().isEmpty() ? 0 :
> prefix.split(sepPatten).length;
>
> Map<String, Set<String>> result = new LinkedHashMap<>();
> try (FileSystem fs = newFileSystem(uri)) {
> //...
> }
> //...
> }{noformat}
> The current implementation of {{ClassFinder}} will close a {{FileSystem}}
> that was opened prior to loading Groovy classes. Specifically, if an
> application opens a {{FileSystem}} for a JAR on the classpath that contains
> Groovy classes and then subsequently loads a Groovy class contained within,
> then the underlying {{ZipFileSystem}} is closed by {{ClassFinder}} and the
> original application receives a {{java.nio.file.ClosedFileSystemException}}
> on subsequent operations.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)