You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Justin Chu (Jira)" <ji...@apache.org> on 2022/06/21 23:20:00 UTC
[jira] [Created] (GROOVY-10664) PackageHelperImpl#getPackageNames unable to find package from path or jars that contains plus sign
Justin Chu created GROOVY-10664:
-----------------------------------
Summary: PackageHelperImpl#getPackageNames unable to find package from path or jars that contains plus sign
Key: GROOVY-10664
URL: https://issues.apache.org/jira/browse/GROOVY-10664
Project: Groovy
Issue Type: Bug
Components: Groovysh
Affects Versions: 2.5.x, 5.x
Environment: Linux, java8u332
Reporter: Justin Chu
PackageHelperImpl#getPackageNames would not be able to find and return
the package names if the package path or filename of the jar contains
plus signs due to the behavior of URLDecoder#decode.
URLDecoder#decode would decode the plus sign (i.e. {{{}+{}}}) as empty space, causing {{{}java.io.FileNotFoundException{}}}.
To reproduce the issue, include a plus sign in the {{groovyVersion}} in the {{{}gradle.properties{}}}, e.g. {{{}5.0.0+SNAPSHOT{}}}, then run the {{{}PackageHelperImplTest{}}}, and {{testLoadAndGetPackagesEmpty}} would fail.
{{WARN [org.apache.groovy.groovysh.util.PackageHelperImpl] Error opening jar file : '/home/jus/repos/apache/groovy/build/libs/groovy-raw-5.0.0+SNAPSHOT.jar' : java.io.FileNotFoundException: /home/jus/repos/apache/groovy/build/libs/groovy-raw-5.0.0 SNAPSHOT.jar (No such file or directory)
...}}
Proposing the fix
Use {{Paths.get(url.toURI()).toFile()}} instead of {{{}new File(URLDecoder.decode(url.file, 'UTF-8')){}}}.
Github PR: https://github.com/apache/groovy/pull/1731
--
This message was sent by Atlassian Jira
(v8.20.7#820007)