-
Notifications
You must be signed in to change notification settings - Fork 440
Closed
Labels
Milestone
Description
C:\picocli-master>C:\pkg\graalvm-ce-19.0.0\bin\java -cp build\libs\picocli-4.0.0-alpha-3-SNAPSHOT.jar;picocli-codegen\build\libs\picocli-codegen-4.0.0-alpha-3-SNAPSHOT.jar picocli.codegen.aot.graalvm.ReflectionConfigGenerator picocli.AutoComplete$App --output reflect-config.json
java.lang.NullPointerException
at picocli.codegen.aot.graalvm.OutputFileMixin.writeToFile(OutputFileMixin.java:28)
at picocli.codegen.aot.graalvm.OutputFileMixin.write(OutputFileMixin.java:20)
at picocli.codegen.aot.graalvm.ReflectionConfigGenerator$App.call(ReflectionConfigGenerator.java:80)
at picocli.codegen.aot.graalvm.ReflectionConfigGenerator$App.call(ReflectionConfigGenerator.java:59)
at picocli.CommandLine.executeUserObject(CommandLine.java:1662)
at picocli.CommandLine.access$900(CommandLine.java:143)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2020)
at picocli.CommandLine$RunLast.handle(CommandLine.java:1987)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:1854)
at picocli.CommandLine.execute(CommandLine.java:1783)
at picocli.codegen.aot.graalvm.ReflectionConfigGenerator.main(ReflectionConfigGenerator.java:90)
Workaround:
--output ./reflect-config.json
Fix:
Index: picocli-codegen/src/main/java/picocli/codegen/aot/graalvm/OutputFileMixin.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- picocli-codegen/src/main/java/picocli/codegen/aot/graalvm/OutputFileMixin.java (date 1557467944357)
+++ picocli-codegen/src/main/java/picocli/codegen/aot/graalvm/OutputFileMixin.java (date 1557467944357)
@@ -25,7 +25,8 @@
private void writeToFile(String result) throws IOException {
FileWriter writer = null;
try {
- if (!outputFile.getParentFile().mkdirs()) {
+ File parent = outputFile.getAbsoluteFile().getParentFile();
+ if (parent != null && !parent.exists() && !parent.mkdirs()) {
System.err.println("Unable to mkdirs for " + outputFile.getAbsolutePath());
}
writer = new FileWriter(outputFile);