[Bug]: spoon.support.SpoonClassNotFoundException: cannot load class
- Dominant language
- Java
- Stars
- 2k
- Forks
- 392
- Avg merge
- 11h 24m
- Merged PRs (30d)
- 36
Description
### Describe the bug
When I use the `partiallyEvaluate()` method to evaluate a expression, the exception occurs.
The test code is project arthas from [arthas](https://github.com/alibaba/arthas).
When the expression is `(obj.getClass() != com.taobao.arthas.core.env.convert.ConvertiblePair.class)`, spoon can not load the class `com.taobao.arthas.core.env.convert.ConvertiblePair`.
### Source code you are trying to analyze/transform
```Java
(obj.getClass() != com.taobao.arthas.core.env.convert.ConvertiblePair.class)
```
### Source code for your Spoon processing
```Java
expr.partiallyEvaluate();
```
### Actual output
```Java
spoon.support.SpoonClassNotFoundException: cannot load class: com.taobao.arthas.core.env.convert.ConvertiblePair
at spoon.support.reflect.reference.CtTypeReferenceImpl.loadClassWithQName(CtTypeReferenceImpl.java:190)
at spoon.support.reflect.reference.CtTypeReferenceImpl.lambda$getClassFromThreadLocalCacheOrLoad$1(CtTypeReferenceImpl.java:172)
at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1133)
at spoon.support.reflect.reference.CtTypeReferenceImpl.getClassFromThreadLocalCacheOrLoad(CtTypeReferenceImpl.java:172)
at spoon.support.reflect.reference.CtTypeReferenceImpl.findClass(CtTypeReferenceImpl.java:163)
at java.base/java.util.Optional.orElseGet(Optional.java:369)
at spoon.support.reflect.reference.CtTypeReferenceImpl.getActualClass(CtTypeReferenceImpl.java:119)
at spoon.support.reflect.eval.VisitorPartialEvaluator.visitFieldAccess(VisitorPartialEvaluator.java:306)
at spoon.support.reflect.eval.VisitorPartialEvaluator.visitCtFieldRead(VisitorPartialEvaluator.java:296)
at spoon.support.reflect.code.CtFieldReadImpl.accept(CtFieldReadImpl.java:18)
at spoon.support.reflect.eval.VisitorPartialEvaluator.evaluate
```
### Expected output
_No response_
### Spoon Version
10.2.1
### JVM Version
11
### What operating system are you using?
windows 11
Contributor guide
Research direction
Start by reproducing expr.partiallyEvaluate() with the reported Arthas expression and inspect VisitorPartialEvaluator.java and CtTypeReferenceImpl.java at the stack-trace locations. The report has no expected output, so clarify the intended handling of the unresolved ConvertiblePair class before defining completion and a regression check.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100