jcommander icon indicating copy to clipboard operation
jcommander copied to clipboard

@ParametersDelegate fails if delegate class implements BiPredicate

Open lindenb opened this issue 1 year ago • 2 comments

Hi,

I've got the following code:

@ParametersDelegate
private StructuralVariantComparator svComparator = new StructuralVariantComparator();

with:

public class StructuralVariantComparator implements BiPredicate<VariantContext,VariantContext> {
(....)

when I run my code (java 17/ jc 1.82), I got the following stacktrace:

Exception in thread "main" java.lang.reflect.InaccessibleObjectException: Unable to make private boolean java.util.function.BiPredicate.lambda$or$2(java.util.function.BiPredicate,java.lang.Object,java.lang.Object) accessible: module java.base does not "opens java.util.function" to unnamed module @2a48d10f
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
	at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
	at com.beust.jcommander.Parameterized.parseArg(Parameterized.java:123)
	at com.beust.jcommander.parser.DefaultParameterizedParser.parseArg(DefaultParameterizedParser.java:23)
	at com.beust.jcommander.JCommander.addDescription(JCommander.java:608)
	at com.beust.jcommander.JCommander.addDescription(JCommander.java:652)
	at com.beust.jcommander.JCommander.createDescriptions(JCommander.java:601)
	at com.beust.jcommander.JCommander.parse(JCommander.java:361)
	at com.beust.jcommander.JCommander.parse(JCommander.java:342)
	at com.github.lindenb.jvarkit.util.jcommander.Launcher.parseArgs(Launcher.java:541)
	at com.github.lindenb.jvarkit.util.jcommander.Launcher.instanceMain(Launcher.java:796)
	at com.github.lindenb.jvarkit.util.jcommander.Launcher.instanceMainWithExit(Launcher.java:982)
	at com.github.lindenb.jvarkit.tools.structvar.SVCasesControls.main(SVCasesControls.java:232)

But there is no error if I comment out the interface:

public class StructuralVariantComparator /* implements BiPredicate<VariantContext,VariantContext> */{

lindenb avatar May 13 '24 14:05 lindenb

Thank you for filing this bug request! Do you feel confident providing a PR with a test (and possibly a proposed solution)?

mkarg avatar Jul 06 '24 16:07 mkarg

@lindenb Kindly asking to reply to my question asked on July 6. Thanks.

mkarg avatar Dec 11 '24 12:12 mkarg