26
26
27
27
import java .lang .reflect .Field ;
28
28
29
- import com .oracle .svm .core .FutureDefaultsOptions ;
30
29
import org .graalvm .nativeimage .ImageSingletons ;
31
30
import org .graalvm .nativeimage .Platform ;
32
31
import org .graalvm .nativeimage .impl .RuntimeClassInitializationSupport ;
33
32
33
+ import com .oracle .svm .core .FutureDefaultsOptions ;
34
34
import com .oracle .svm .core .ParsingReason ;
35
35
import com .oracle .svm .core .feature .AutomaticallyRegisteredFeature ;
36
36
import com .oracle .svm .core .feature .InternalFeature ;
53
53
54
54
@ AutomaticallyRegisteredFeature
55
55
public class JDKInitializationFeature implements InternalFeature {
56
- private static final String JDK_CLASS_REASON = "Core JDK classes are initialized at build time" ;
56
+ static final String JDK_CLASS_REASON = "Core JDK classes are initialized at build time" ;
57
57
58
58
@ Override
59
59
public void afterRegistration (AfterRegistrationAccess access ) {
@@ -72,8 +72,10 @@ public void afterRegistration(AfterRegistrationAccess access) {
72
72
rci .initializeAtBuildTime ("java.net" , JDK_CLASS_REASON );
73
73
rci .initializeAtBuildTime ("java.nio" , JDK_CLASS_REASON );
74
74
rci .initializeAtBuildTime ("java.text" , JDK_CLASS_REASON );
75
+
75
76
rci .initializeAtBuildTime ("java.time" , JDK_CLASS_REASON );
76
77
rci .initializeAtRunTime ("java.time.chrono.HijrahChronology" , "Reads java.home in class initializer." );
78
+
77
79
rci .initializeAtBuildTime ("java.util" , JDK_CLASS_REASON );
78
80
rci .initializeAtRunTime ("java.util.concurrent.SubmissionPublisher" , "Executor service must be recomputed" );
79
81
@@ -83,7 +85,6 @@ public void afterRegistration(AfterRegistrationAccess access) {
83
85
rci .initializeAtBuildTime ("javax.naming" , JDK_CLASS_REASON );
84
86
rci .initializeAtBuildTime ("javax.net" , JDK_CLASS_REASON );
85
87
rci .initializeAtBuildTime ("javax.tools" , JDK_CLASS_REASON );
86
- rci .initializeAtBuildTime ("javax.xml" , JDK_CLASS_REASON );
87
88
88
89
rci .initializeAtBuildTime ("jdk.internal" , JDK_CLASS_REASON );
89
90
rci .initializeAtBuildTime ("jdk.jfr" , "Needed for Native Image substitutions" );
@@ -94,15 +95,6 @@ public void afterRegistration(AfterRegistrationAccess access) {
94
95
rci .initializeAtBuildTime ("jdk.net" , JDK_CLASS_REASON );
95
96
rci .initializeAtBuildTime ("jdk.nio" , JDK_CLASS_REASON );
96
97
rci .initializeAtBuildTime ("jdk.vm.ci" , "Native Image classes are always initialized at build time" );
97
- rci .initializeAtBuildTime ("jdk.xml" , JDK_CLASS_REASON );
98
- /*
99
- * The XML classes have cyclic class initializer dependencies, and class initialization can
100
- * deadlock/fail when initialization is started at the "wrong part" of the cycle.
101
- * Force-initializing the correct class of the cycle here, in addition to the
102
- * "whole package" initialization above, breaks the cycle because it triggers immediate
103
- * initilalization here before the static analysis is started.
104
- */
105
- rci .initializeAtBuildTime ("jdk.xml.internal.JdkXmlUtils" , JDK_CLASS_REASON );
106
98
107
99
rci .initializeAtBuildTime ("sun.invoke" , JDK_CLASS_REASON );
108
100
rci .initializeAtBuildTime ("sun.launcher" , JDK_CLASS_REASON );
@@ -145,11 +137,30 @@ public void afterRegistration(AfterRegistrationAccess access) {
145
137
146
138
/* XML-related */
147
139
if (FutureDefaultsOptions .isJDKInitializedAtRunTime ()) {
148
- // GR-50683 should remove this part
149
- rci .initializeAtBuildTime ("com.sun.xml" , JDK_CLASS_REASON );
150
- rci .initializeAtBuildTime ("com.sun.org.apache" , JDK_CLASS_REASON );
151
- rci .initializeAtBuildTime ("com.sun.org.slf4j.internal" , JDK_CLASS_REASON );
140
+ /*
141
+ * still initialization due to the security services that reach the XMLSecurityManager
142
+ */
143
+ rci .initializeAtBuildTime ("javax.xml.catalog.CatalogImpl" , "Security providers initialized at build time: jdk.xml.internal.XMLSecurityManager" );
144
+ rci .initializeAtBuildTime ("javax.xml.catalog.CatalogResolver$NotFoundAction$1" , "Security providers initialized at build time: jdk.xml.internal.XMLSecurityManager" );
145
+ rci .initializeAtBuildTime ("javax.xml.catalog.CatalogResolver$NotFoundAction$2" , "Security providers initialized at build time: jdk.xml.internal.XMLSecurityManager" );
146
+ rci .initializeAtBuildTime ("javax.xml.catalog.CatalogResolver$NotFoundAction$3" , "Security providers initialized at build time: jdk.xml.internal.XMLSecurityManager" );
147
+ rci .initializeAtBuildTime ("javax.xml.catalog.SystemSuffix" , "Security providers initialized at build time: jdk.xml.internal.XMLSecurityManager" );
148
+ rci .initializeAtBuildTime ("javax.xml.catalog.SystemEntry" , "Security providers initialized at build time: jdk.xml.internal.XMLSecurityManager" );
149
+ rci .initializeAtBuildTime ("javax.xml.catalog.CatalogFeatures" , "Security providers initialized at build time: jdk.xml.internal.XMLSecurityManager" );
150
+ rci .initializeAtBuildTime ("javax.xml.catalog.BaseEntry$CatalogEntryType" , "Security providers initialized at build time: jdk.xml.internal.XMLSecurityManager" );
151
+ rci .initializeAtBuildTime ("javax.xml.catalog.CatalogFeatures$State" , "Security providers initialized at build time: jdk.xml.internal.XMLSecurityManager" );
152
+ rci .initializeAtBuildTime ("javax.xml.catalog.PublicEntry" , "Security providers initialized at build time: jdk.xml.internal.XMLSecurityManager" );
152
153
} else {
154
+ rci .initializeAtBuildTime ("jdk.xml" , JDK_CLASS_REASON );
155
+ /*
156
+ * The XML classes have cyclic class initializer dependencies, and class initialization
157
+ * can deadlock/fail when initialization is started at the "wrong part" of the cycle.
158
+ * Force-initializing the correct class of the cycle here, in addition to the
159
+ * "whole package" initialization above, breaks the cycle because it triggers immediate
160
+ * initilalization here before the static analysis is started.
161
+ */
162
+ rci .initializeAtBuildTime ("jdk.xml.internal.JdkXmlUtils" , JDK_CLASS_REASON );
163
+
153
164
rci .initializeAtBuildTime ("com.sun.xml" , JDK_CLASS_REASON );
154
165
rci .initializeAtBuildTime ("com.sun.org.apache" , JDK_CLASS_REASON );
155
166
rci .initializeAtBuildTime ("com.sun.org.slf4j.internal" , JDK_CLASS_REASON );
@@ -229,8 +240,6 @@ public void afterRegistration(AfterRegistrationAccess access) {
229
240
rci .initializeAtRunTime ("jdk.internal.foreign.abi.fallback.FFIABI" , "Fails build-time initialization" );
230
241
rci .initializeAtRunTime ("sun.reflect.misc.Trampoline" , "Fails build-time initialization" );
231
242
232
- rci .initializeAtRunTime ("com.sun.org.apache.xml.internal.serialize.HTMLdtd" , "Fails build-time initialization" );
233
-
234
243
rci .initializeAtRunTime ("sun.security.ssl.SSLContextImpl$DefaultSSLContextHolder" , "Stores secure random" );
235
244
rci .initializeAtRunTime ("sun.security.ssl.SSLSocketFactoryImpl" , "Stores secure random" );
236
245
rci .initializeAtRunTime ("sun.security.provider.certpath.ssl.SSLServerCertStore" , "Stores secure random" );
0 commit comments