The following code results in a NullPointerException:
ClassLoader classLoader = ...
String url = ...
GroovyScriptEngine engine = new GroovyScriptEngine(url, classLoader);
Here is the stack trace:
java.lang.NullPointerException
at java.util.Collections$UnmodifiableMap.<init>(Unknown Source)
at java.util.Collections.unmodifiableMap(Unknown Source)
at org.codehaus.groovy.control.CompilerConfiguration$1.getJointCompilationOptions(CompilerConfiguration.java:147)
at org.codehaus.groovy.control.CompilerConfiguration.<init>(CompilerConfiguration.java:481)
at groovy.util.GroovyScriptEngine.<init>(GroovyScriptEngine.java:96)
at groovy.util.GroovyScriptEngine.<init>(GroovyScriptEngine.java:495)
at groovy.util.GroovyScriptEngine.<init>(GroovyScriptEngine.java:503)
The problem is that CompilerConfiguration.DEFAULT.getJointCompilationOptions() wants to create an unmodifiable map with null (jointCompilationOptions is always null at this point).
The error is included since commit b03ff24c8f43088b6edadb1adcf17f7a945d6563.
public class CompilerConfiguration {
...
public static final CompilerConfiguration DEFAULT = new CompilerConfiguration() {
...
@Override
public Map<String, Object> getJointCompilationOptions() {
return Collections.unmodifiableMap(super.getJointCompilationOptions()); // <------- NullPointerException
}
...
}
/**
* options for joint compilation (null by default == no joint compilation)
*/
private Map<String, Object> jointCompilationOptions;
public CompilerConfiguration(CompilerConfiguration configuration) {
...
Map<String, Object> jointCompilationOptions = configuration.getJointCompilationOptions();
if (jointCompilationOptions != null) {
jointCompilationOptions = new HashMap<String, Object>(jointCompilationOptions);
}
...
}
public Map<String, Object> getJointCompilationOptions() {
return jointCompilationOptions;
}
...
}
Here is an easier way to reproduce:
CompilerConfiguration defaultConfig = CompilerConfiguration.DEFAULT;
System.out.println("JointCompilationOptions: " + defaultConfig.getJointCompilationOptions());
The following code results in a NullPointerException:
Here is the stack trace:
The problem is that
CompilerConfiguration.DEFAULT.getJointCompilationOptions()wants to create an unmodifiable map withnull(jointCompilationOptionsis alwaysnullat this point).The error is included since commit b03ff24c8f43088b6edadb1adcf17f7a945d6563.
Here is an easier way to reproduce: