3030 */
3131public class ModuleUtil {
3232
33- private static final Logger LOGGER = SofaBootLoggerFactory
34- .getLogger (ModuleUtil .class );
33+ private static final Logger LOGGER = SofaBootLoggerFactory
34+ .getLogger (ModuleUtil .class );
3535
3636 private static final MethodHandle implAddOpensToAllUnnamed ;
37+
3738 private static final MethodHandle implAddOpens ;
39+
3840 private static final MethodHandle implAddExportsToAllUnnamed ;
41+
3942 private static final MethodHandle implAddExports ;
43+
4044 private static final Map <String , Module > nameToModules ;
4145
46+ private static boolean isExported = false ;
47+
4248 static {
4349 implAddOpensToAllUnnamed = createModuleMethodHandle ("implAddOpensToAllUnnamed" ,
4450 String .class );
@@ -54,15 +60,17 @@ public class ModuleUtil {
5460 */
5561 public static void exportAllJDKModulePackageToAll () {
5662 try {
57- if (nameToModules != null ) {
63+ if (! isExported && nameToModules != null ) {
5864 nameToModules .forEach ((name , module ) -> module .getPackages ().forEach (pkgName -> {
5965 if (isJDKModulePackage (pkgName )) {
6066 addOpensToAll (module , pkgName );
6167 addExportsToAll (module , pkgName );
6268 }
6369 }));
6470 }
71+ isExported = true ;
6572 } catch (Throwable t ) {
73+ isExported = false ;
6674 LOGGER .error ("Failed to export all JDK module package to all" , t );
6775 }
6876 }
@@ -76,14 +84,15 @@ private static boolean isJDKModulePackage(String modulePackageName) {
7684 */
7785 public static void exportAllModulePackageToAll () {
7886 try {
79- Map <String , Module > nameToModules = getNameToModule ();
80- if (nameToModules != null ) {
87+ if (!isExported && nameToModules != null ) {
8188 nameToModules .forEach ((name , module ) -> module .getPackages ().forEach (pkgName -> {
8289 addOpensToAll (module , pkgName );
8390 addExportsToAll (module , pkgName );
8491 }));
8592 }
93+ isExported = true ;
8694 } catch (Throwable t ) {
95+ isExported = false ;
8796 LOGGER .error ("Failed to export all module package to all" , t );
8897 }
8998 }
0 commit comments