-
-
Notifications
You must be signed in to change notification settings - Fork 303
Permalink
Choose a base ref
{{ refName }}
default
Choose a head ref
{{ refName }}
default
Comparing changes
Choose two branches to see what’s changed or to start a new pull request.
If you need to, you can also or
learn more about diff comparisons.
Open a pull request
Create a new pull request by comparing changes across two branches. If you need to, you can also .
Learn more about diff comparisons here.
base repository: classgraph/classgraph
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: classgraph-4.8.163
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
...
head repository: classgraph/classgraph
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: classgraph-4.8.164
Could not load branches
Nothing to show
Loading
Could not load tags
Nothing to show
{{ refName }}
default
Loading
- 5 commits
- 8 files changed
- 2 contributors
Commits on Oct 13, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 8b51126 - Browse repository at this point
Copy the full SHA 8b51126View commit details
Commits on Nov 2, 2023
-
Handle paths with spaces and hashes especially with nested JARs
With nested jars there are two different mechanisms that will be used as the path is not usable as a `java.nio.file.Path` instance. The first is trying to convert the resulting nested path - a path like `jar:file:....!/some/nested/path` - to a `URL` and if that should fail due to a `MalformedURLException` it is tried to convert the path to `URI`. If the URI fallback fails an IOException will be thrown and this eventually will bubble up and discard the whole classpath entry, resulting in a message like the following when enabling verbose output during scanning: ``` 2023-11-02T12:51:42.719+0100 ClassGraph -- Skipping invalid classpath entry .../spring-boot-fully-executable-jar.jar!/BOOT-INF/lib/... : java.io.IOException: Malformed URI: ... ``` Most of the time nothing will be discarded as most paths can be converted to a URL in the first step or at least succeed when converting to a URI. However for paths containing spaces and the hash symbol we can reach a case where both URL conversion and URI conversion fail and so the classpath entry is discarded even though all paths are valid and can be usable. Let us assume a Spring Boot Executable JAR that is located in a directory named `ci-build main #123` - which is a valid directory name on Windows and Linux. When ClassGraph reaches a nested library here it will construct the paths to the nested jars like `jar:file:<path>!/<nested-path>`. So in this case we end up with something like `jar:file:/opt/ci-build main #123!/BOOT-INF/lib/my-lib.jar`. When ClassGraph reaches the conversion code it will first try to convert to a URL. This will fail with the following message: `java.net.MalformedURLException: no !/ in spec` If we then fallback to the URI conversion it will try to convert but as our path contains spaces this will also be rejected by an exception: `java.net.URISyntaxException: Illegal character in opaque part at index 66: jar:file:...` The index will point to the first space in the path that is converted. So we can construct nested paths that are neither valid `URL` instances nor valid `URI instances`. To solve this issue we introduce encoding for spaces when the path is handled as a url or multi-section path to ensure that conversion can succeed. This seems to also be what the `java.nio.file.Path` API does when asking for the resulting URI for the same path. So this commit encodes spaces as `%20` and hash symbols as `%23` when going into the URL/Multi-Section branch. Fixes #804
Configuration menu - View commit details
-
Copy full SHA for 72c52de - Browse repository at this point
Copy the full SHA 72c52deView commit details -
Merge pull request #805 from jwachter/fix/nested-with-space-and-hash-…
…path Handle paths with spaces and hashes especially with nested JARs
Configuration menu - View commit details
-
Copy full SHA for 07c2f49 - Browse repository at this point
Copy the full SHA 07c2f49View commit details -
Configuration menu - View commit details
-
Copy full SHA for a942bf6 - Browse repository at this point
Copy the full SHA a942bf6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8360c03 - Browse repository at this point
Copy the full SHA 8360c03View commit details
Loading
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff classgraph-4.8.163...classgraph-4.8.164