Fixed NPE on Java 9+ when check if an array type is accessible.
diff --git a/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java b/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java
index 700d801..1f5182a 100644
--- a/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java
+++ b/freemarker-core9/src/main/java/freemarker/core/_Java9Impl.java
@@ -39,7 +39,10 @@
@Override
public boolean isAccessibleAccordingToModuleExports(Class<?> accessedClass) {
Module accessedModule = accessedClass.getModule();
- Package accessedPackage = accessedClass.getPackage();
+ Package accessedPackage = accessedClass.getPackage(); // null for arrays!
+ if (accessedPackage == null) {
+ return true;
+ }
return accessedModule.isExported(accessedPackage.getName(), ACCESSOR_MODULE);
}
diff --git a/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java b/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java
index 35cd1a4..9612d5b 100644
--- a/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java
+++ b/freemarker-core9/src/test/java/freemarker/core/Java9ImplTest.java
@@ -41,6 +41,8 @@
assertNotNull(_JavaVersions.JAVA_9);
assertTrue(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(Document.class));
assertFalse(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(getSomeInternalClass()));
+ assertTrue(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(String[].class));
+ assertTrue(_JavaVersions.JAVA_9.isAccessibleAccordingToModuleExports(int.class));
}
private static Class<?> getSomeInternalClass() throws SAXException, IOException, ParserConfigurationException,