Handle NoClassDefFoundError when determining class type #186
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When
resolve-missing
gets a number of candidate classes, it will load them todetermine the type (Clojure type/record vs regular Java class). However a class
on the classpath may be compiled with dependencies that are not currently
present, causing the loading to fail.
This would cause the whole operation to fail, instead this change handles the
exception, takes it as a sign that it's a regular Java class, and continues.
For example, I do a
resolve-missing
on the symbol URL, this yields twocandidates:
java.net.URL
, andcom.gargoylesoftware.htmlunit.javascript.host.URL
. The latter depends onorg.w3c.dom.ElementTraversal
, which is not currently present, causing aNoClassDefFoundError
.Before submitting a PR make sure the following things have been done (and denote this
by checking the relevant checkboxes):
lein do clean, test
)./build.sh install
-- takes a long time)Thanks!