You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/reference-manual/native-image/BuildReport.md
+21Lines changed: 21 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -194,6 +194,27 @@ All of this information is also available as JSON in the [CycloneDX](https://git
194
194
The PGO Sampling Profile is a section that is only present in reports generated when building [PGO-optimized binaries](guides/optimize-native-executable-with-pgo.md).
195
195
This section is described in detail in its dedicated PGO guide - [Inspecting a Profile in a Build Report](PGO-Build-Report.md).
196
196
197
+
## Dynamic Access
198
+
199
+
Dynamic access refers to all method calls and operations that require reachability metadata to function correctly in a native image. This includes reflection, resource access, serialization, and native calls. GraalVM 25 introduces an experimental reporting feature to help you identify dynamic access (such as reflection) before it causes runtime issues. When you build with both `-H:+ReportDynamicAccess` and `--emit=build-report`, the Native Image build report includes a **Dynamic Access** tab that highlights reflective usage present in the image.
200
+
201
+
After building your application, open the generated report (for example, _target/[x]-build-report.html_) and navigate to the **Dynamic Access** tab to review dynamic access usage.
202
+
203
+
This section of the report highlights code that may require review to ensure your application runs successfully as a native executable. For example, classes loaded via `Class.forName(...)` must be included in the executable.
204
+
205
+
**Understanding the Dynamic Access tab:**
206
+
207
+
- If no dynamic calls are detected for a class or module path entry, no further action is needed.
208
+
- If the entry includes `native-image.properties` or `reachability-metadata.json`, or these files are provided externally, no further investigation is required.
209
+
- If integrated configuration or external metadata (such as `reflect-config.json`) exists for each detected call type, no further investigation is required.
210
+
- If none of the above apply, the entry may require further investigation.
211
+
212
+
For each entry with detected dynamic calls, you can expand the entry in the report to see the specific methods and their call locations. The report also provides links to configuration files, whether they are packaged in JARs or available in directories.
213
+
214
+
> Only dynamic calls found in reachable code are reported. Some entries may have existing metadata but no reported dynamic calls.
215
+
216
+
For a practical demonstration of running and using the `-H:+ReportDynamicAccess` option, see the [preserve-package demo](https://github.com/graalvm/graalvm-demos/tree/master/native-image/preserve-package).
0 commit comments