picocli icon indicating copy to clipboard operation
picocli copied to clipboard

NullPointerException upon moving to 4.7.6 from 4.7.5

Open JessHolle opened this issue 8 months ago • 2 comments

I am getting a NullPointerException apparently from within picocli code when attempting to upgrade to 4.7.6 from 4.7.5 (where the app works AOK).

I get

NullPointerException: Cannot invoke "java.lang.ClassLoader.getResource(String)" because the return value of "java.lang.Class.getClassLoader()" is null while processing argument at or before arg[2] 'foo' in [dumpSchema, -o, foo]: java.lang.NullPointerException: Cannot invoke "java.lang.ClassLoader.getResource(String)" because the return value of "java.lang.Class.getClassLoader()" is null

The related annotations are:

  @CommandLine.Command(name = "dumpSchema", separator = " ", description="...",
                       mixinStandardHelpOptions = true, versionProvider = Main.VersionProvider.class,
                       defaultValueProvider = PropertiesDefaultProvider.class)
  // used from main() via picocli annotations
  private static void dumpSchema(
    @CommandLine.Option(names = "-o", paramLabel="<outputFile>", required = false,
                        description = "...")
    @Nullable Path outputFile)

Setting -Dpicocli.trace, I get loads of INFO messages along these lines. All without any further stack traces or the like, unfortunately.

With 4.7.5 I get no such messages.

In case it matters this is for an application wrapped up as a single jar and being invoked via java -jar (and built via the com.github.johnrengelman.shadow Gradle plugin).

JessHolle avatar May 28 '24 15:05 JessHolle