cbeust / jcommander

Command line parsing framework for Java
Apache License 2.0
1.94k stars 332 forks source link

Main parameter does not support IStringConverterInstanceFactory #538

Open antonio-rodriges opened 2 years ago

antonio-rodriges commented 2 years ago

JCommander can accept

IStringConverterInstanceFactory

But it does not work for the main parameter

com.beust.jcommander.ParameterException: Could not invoke null
    Reason: Can not set <....>.Name field ><.....>.Name to java.lang.String
    at com.beust.jcommander.Parameterized.set(Parameterized.java:273)
    at com.beust.jcommander.JCommander$MainParameter.addValue(JCommander.java:108)
    at com.beust.jcommander.JCommander.parseValues(JCommander.java:789)
    at com.beust.jcommander.JCommander.parse(JCommander.java:363)
    at com.beust.jcommander.JCommander.parse(JCommander.java:342)

A workaround is to specify a dummy converter class for the main parameter that cannot be instantiated (e.g. an abstract class with a private constructor), see https://github.com/cbeust/jcommander/issues/380#issuecomment-1189410233

Related issue: https://github.com/cbeust/jcommander/issues/380

mkarg commented 4 months ago

Is this still an issue in current release 1.83? If so, could you please provide a unit test which proofs your claim? Thanks!