-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Methods accessed reflectively starting with GraalVM for JDK 23+26 #41283
Comments
Last time I saw this issue (which was recently, but yet I don't remember where it was), it was because of a class which had |
I think it's not related to this. Note that we see the issue with other packages as well, e.g. java.sql |
This should now be fixed by oracle/graal#9184, I will wait for the CI to confirm. |
Example errors of this look like:
|
This reverts commit 8b90462. The need for these additional registrations has been handled in upstream GraalVM with oracle/graal#9184 so they are no longer needed. Closes quarkusio#41283
This reverts commit 8b90462. The need for these additional registrations has been handled in upstream GraalVM with oracle/graal#9184 so they are no longer needed. Closes quarkusio#41283
This reverts commit 8b90462. The need for these additional registrations has been handled in upstream GraalVM with oracle/graal#9184 so they are no longer needed. Closes quarkusio#41283
Describe the bug
Starting with GraalVM for JDK 23 we see a lot of
java.lang.BootstrapMethodError: java.lang.NoSuchMethodError
, see https://github.com/oracle/graal/actions/runs/9558273459I don't fully understand what's happening but the issue seems related to https://bugs.openjdk.org/browse/JDK-8229959.
I initially thought that registering the missing methods would be enough, but it looks like this is not the right way to go for all cases as some of the proxied classes may be used by the application itself and we don't know which methods will be reflective accessed in this case. E.g. in
quarkus/integration-tests/spring-web/src/main/java/io/quarkus/it/spring/web/CustomAdvice.java
Line 37 in 5037263
the test is invoking
getRequestURI
on the proxiedHttpServletRequest
resulting in the following error/trace:Since we don't know what methods might be invoked on the proxied classes I think we need to register all methods of proxied classes for reflective access. I am not sure how to detect which classes are being proxied though...
Expected behavior
Tests should build and pass as they do with GraalVM for JDK 21 and 22
Actual behavior
Tests fail with errors like the following:
How to Reproduce?
GRAALVM_HOME
to point to the extracted directory./mvnw -Dnative -pl integration-tests/spring-web -Dnative.surefire.skip -Dformat.skip -Dno-descriptor-tests clean verify -Dquarkus.native.container-build=false -Dtest-containers -Dstart-containers
Output of
uname -a
orver
No response
Output of
java -version
23 and 24
Mandrel or GraalVM version (if different from Java)
GraalVM for JDK 23 (and 24)
Quarkus version or git rev
5037263
Build tool (ie. output of
mvnw --version
orgradlew --version
)No response
Additional information
No response
The text was updated successfully, but these errors were encountered: