INRIA / INRIA/spoon

[Bug]: spoon.support.SpoonClassNotFoundException: cannot load class

Open
#5,100 1 comment 0 reactions 0 assignees View on GitHub
bug
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.