27
27
import io .quarkus .deployment .builditem .GeneratedNativeImageClassBuildItem ;
28
28
import io .quarkus .deployment .builditem .GeneratedResourceBuildItem ;
29
29
import io .quarkus .deployment .builditem .nativeimage .ForceNonWeakReflectiveClassBuildItem ;
30
+ import io .quarkus .deployment .builditem .nativeimage .JPMSExportBuildItem ;
30
31
import io .quarkus .deployment .builditem .nativeimage .JniRuntimeAccessBuildItem ;
31
32
import io .quarkus .deployment .builditem .nativeimage .NativeImageProxyDefinitionBuildItem ;
32
33
import io .quarkus .deployment .builditem .nativeimage .NativeImageResourceBuildItem ;
@@ -108,6 +109,7 @@ GeneratedResourceBuildItem generateNativeResourcesList(List<NativeImageResourceB
108
109
109
110
@ BuildStep
110
111
void generateFeature (BuildProducer <GeneratedNativeImageClassBuildItem > nativeImageClass ,
112
+ BuildProducer <JPMSExportBuildItem > exports ,
111
113
List <RuntimeInitializedClassBuildItem > runtimeInitializedClassBuildItems ,
112
114
List <RuntimeInitializedPackageBuildItem > runtimeInitializedPackageBuildItems ,
113
115
List <RuntimeReinitializedClassBuildItem > runtimeReinitializedClassBuildItems ,
@@ -208,6 +210,9 @@ public void write(String s, byte[] bytes) {
208
210
}
209
211
210
212
if (!proxies .isEmpty ()) {
213
+ // Needed to access DYNAMIC_PROXY_REGISTRY
214
+ exports .produce (new JPMSExportBuildItem ("org.graalvm.nativeimage.builder" , "com.oracle.svm.core.jdk.proxy" ));
215
+
211
216
ResultHandle proxySupportClass = overallCatch .loadClassFromTCCL (DYNAMIC_PROXY_REGISTRY );
212
217
ResultHandle proxySupport = overallCatch .invokeStaticMethod (
213
218
IMAGE_SINGLETONS_LOOKUP ,
@@ -228,6 +233,9 @@ public void write(String s, byte[] bytes) {
228
233
229
234
/* Resource includes and excludes */
230
235
if (!resourcePatterns .isEmpty ()) {
236
+ // Needed to access LOOKUP_METHOD
237
+ exports .produce (new JPMSExportBuildItem ("org.graalvm.nativeimage.base" , "com.oracle.svm.util" ));
238
+
231
239
ResultHandle resourcesRegistrySingleton = overallCatch .invokeStaticMethod (IMAGE_SINGLETONS_LOOKUP ,
232
240
overallCatch .loadClassFromTCCL ("com.oracle.svm.core.configure.ResourcesRegistry" ));
233
241
TryBlock tc = overallCatch .tryBlock ();
@@ -300,6 +308,9 @@ public void write(String s, byte[] bytes) {
300
308
}
301
309
302
310
if (!resourceBundles .isEmpty ()) {
311
+ // Needed to access LOCALIZATION_FEATURE
312
+ exports .produce (new JPMSExportBuildItem ("org.graalvm.nativeimage.builder" , "com.oracle.svm.core.jdk.localization" ));
313
+
303
314
AssignableResultHandle registerMethod = overallCatch .createVariable (Method .class );
304
315
AssignableResultHandle locClass = overallCatch .createVariable (Class .class );
305
316
TryBlock locTryBlock = overallCatch .tryBlock ();
@@ -458,6 +469,8 @@ public void write(String s, byte[] bytes) {
458
469
459
470
if (entry .getValue ().serialization ) {
460
471
if (registerSerializationMethod == null ) {
472
+ // Needed by createRegisterSerializationForClassMethod to access LOOKUP_METHOD
473
+ exports .produce (new JPMSExportBuildItem ("org.graalvm.nativeimage.base" , "com.oracle.svm.util" ));
461
474
registerSerializationMethod = createRegisterSerializationForClassMethod (file );
462
475
}
463
476
0 commit comments