Skip to content

Commit

Permalink
Document how to statically provide GraalVM hints
Browse files Browse the repository at this point in the history
Closes gh-42515
  • Loading branch information
wilkinsona committed Nov 8, 2024
1 parent 90de82a commit bebdf69
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ For further reading, please see {graal-native-image-docs}/metadata/AutomaticMeta

[[native-image.advanced.custom-hints]]
=== Custom Hints
If you need to provide your own hints for reflection, resources, serialization, proxy usage etc. you can use the `RuntimeHintsRegistrar` API.
If you need to provide your own hints for reflection, resources, serialization, proxy usage and so on, you can use the `RuntimeHintsRegistrar` API.
Create a class that implements the `RuntimeHintsRegistrar` interface, and then make appropriate calls to the provided `RuntimeHints` instance:

include::code:MyRuntimeHints[]
Expand All @@ -172,6 +172,15 @@ include::code:MyRuntimeHintsTests[]



[[native-image.advanced.custom-hints.static]]
==== Providing Hints Statically
If you prefer, custom hints can be provided statically in one or more GraalVM JSON hint files.
Such files should be placed in `src/main/resources/` within a `+META-INF/native-image/*/*/+` directory.
The <<native-image#native-image.introducing-graalvm-native-images.understanding-aot-processing,hints generated during AOT processing>> are written to a directory named `+META-INF/native-image/{groupId}/{artifactId}/+`.
Place your static hint files in a directory that does not clash with this location, such as `+META-INF/native-image/{groupId}/{artifactId}-additional-hints/+`



[[native-image.advanced.known-limitations]]
=== Known Limitations
GraalVM native images are an evolving technology and not all libraries provide support.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,15 @@ A Spring AOT processed application will typically generate:

* Java source code
* Bytecode (for dynamic proxies etc)
* GraalVM JSON hint files:
* GraalVM JSON hint files in `+META-INF/native-image/{groupId}/{artifactId}/+`:
- Resource hints (`resource-config.json`)
- Reflection hints (`reflect-config.json`)
- Serialization hints (`serialization-config.json`)
- Java Proxy Hints (`proxy-config.json`)
- JNI Hints (`jni-config.json`)

If the generated hints are not sufficient, you can also <<native-image#native-image.advanced.custom-hints,provide your own>>.



[[native-image.introducing-graalvm-native-images.understanding-aot-processing.source-code-generation]]
Expand Down

0 comments on commit bebdf69

Please sign in to comment.