Class DynamicProxyConfigGenerator
DynamicProxyConfigGenerator
generates a JSON String with the fully qualified interface names for which
dynamic proxy classes should be generated at native image build time.
Substrate VM doesn't provide machinery for generating and interpreting bytecodes at run time. Therefore all dynamic proxy classes need to be generated at native image build time.
The output of DynamicProxyConfigGenerator
is intended to be passed to the -H:DynamicProxyConfigurationFiles=/path/to/proxy-config.json
option of the native-image
GraalVM utility.
This allows picocli-based native image applications that use @Command
-annotated interfaces with
@Option
and @Parameters
-annotated methods to define options and positional parameters.
Alternatively, the generated configuration
files can be supplied to the native-image
tool by placing them in a
META-INF/native-image/
directory on the class path, for example, in a JAR file used in the image build.
This directory (or any of its subdirectories) is searched for files with the names jni-config.json
,
reflect-config.json
, proxy-config.json
and resource-config.json
, which are then automatically
included in the build. Not all of those files must be present.
When multiple files with the same name are found, all of them are included.
- Since:
- 4.0
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic String
generateProxyConfig
(CommandLine.Model.CommandSpec[] specs, String[] interfaceClasses) Returns a JSON String with the interface names to generate dynamic proxy classes for in the native image, used by the specifiedCommandSpec
objects.static void
Runs this class as a standalone application, printing the resulting JSON String to a file or toSystem.out
.
-
Constructor Details
-
DynamicProxyConfigGenerator
public DynamicProxyConfigGenerator()
-
-
Method Details
-
main
Runs this class as a standalone application, printing the resulting JSON String to a file or toSystem.out
.- Parameters:
args
- one or more fully qualified class names of@Command
-annotated classes.
-
generateProxyConfig
public static String generateProxyConfig(CommandLine.Model.CommandSpec[] specs, String[] interfaceClasses) Returns a JSON String with the interface names to generate dynamic proxy classes for in the native image, used by the specifiedCommandSpec
objects.- Parameters:
specs
- one or moreCommandSpec
objects to inspect for dynamic proxiesinterfaceClasses
- other (non-@Command
) fully qualified interface names to generate dynamic proxy classes for- Returns:
- a JSON String in the format
required by the
-H:DynamicProxyConfigurationFiles=/path/to/proxy-config.json
option of the GraalVMnative-image
utility.
-