linghengqian commented on code in PR #36037: URL: https://github.com/apache/shardingsphere/pull/36037#discussion_r2218442109
########## docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md: ########## @@ -16,18 +16,22 @@ ShardingSphere JDBC requires GraalVM Native Image to be built with GraalVM CE as JDK through `SDKMAN!`. Same reason applicable to downstream distributions of `GraalVM CE` such as https://sdkman.io/jdks#graal , https://sdkman.io/jdks#nik and https://sdkman.io/jdks#mandrel . -- GraalVM CE For JDK 22.0.2, corresponding to `22.0.2-graalce` of SDKMAN! +- GraalVM CE For JDK 24.0.2, corresponding to `24.0.2-graalce` of SDKMAN! -Users can still use the old versions of GraalVM CE such as `21.0.2-graalce` on SDKMAN! to build the GraalVM Native Image product of ShardingSphere. -However, this will cause the failure of building the GraalVM Native Image when integrating some third-party dependencies. -A typical example is related to the `org.apache.hive:hive-jdbc:4.0.1` HiveServer2 JDBC Driver, which uses AWT-related classes. -GraalVM CE only supports AWT for GraalVM CE For JDK22 and higher versions. +Users can still use old versions of GraalVM CE such as `21.0.8-graal` on SDKMAN! to build ShardingSphere's GraalVM Native Image product. +But this will cause the failure of building GraalVM Native Image when integrating some third-party dependencies. +Classification discussion, +1. Developers are using `org.apache.hive:hive-jdbc:4.0.1` related to HiveServer2 JDBC Driver. Since HiveServer2 JDBC Driver uses AWT-related classes, + and `GraalVM CE`'s support for AWT-related classes is only in GraalVM CE For JDK22 and higher, this will destroy the construction of GraalVM Native Image. ```shell com.sun.beans.introspect.ClassInfo was unintentionally initialized at build time. To see why com.sun.beans.introspect.ClassInfo got initialized use --trace-class-initialization=com.sun.beans.introspect.ClassInfo java.beans.Introspector was unintentionally initialized at build time. To see why java.beans.Introspector got initialized use --trace-class-initialization=java.beans.Introspector ``` +2. The developer is using an old version of `GraalVM CE` or a downstream distribution of `GraalVM CE` that does not include the backported patch of https://github.com/graalvm/graalvm-community-jdk21u/pull/23 . + In this case, the developer needs to write more JSON related to GraalVM Reachability Metadata that can be recognized by the old version of `GraalVM CE`. + Review Comment: - I have to hazard a guess that most downstream releases of GraalVM CE Fork JDK 21 include the backported patches from https://github.com/graalvm/graalvm-community-jdk21u/pull/23 , since there are only 3 downstream releases of GraalVM CE that actually use the concept of LTS. - https://sdkman.io/jdks/graal - https://sdkman.io/jdks/nik - https://sdkman.io/jdks/mandrel -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
