From 70efcc0d2b9accede4af77a8a3e45f05e7eefacd Mon Sep 17 00:00:00 2001 From: Michiel Meeuwissen Date: Fri, 20 Mar 2026 15:22:53 +0100 Subject: [PATCH] A 'compact' class results in a not accessible exception if we don't make the contructor accessible. --- .../codehaus/mojo/exec/AbstractExecJavaBase.java | 1 + src/test/java/CompactClass.java | 7 +++++++ .../org/codehaus/mojo/exec/ExecJavaMojoTest.java | 14 ++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 src/test/java/CompactClass.java diff --git a/src/main/java/org/codehaus/mojo/exec/AbstractExecJavaBase.java b/src/main/java/org/codehaus/mojo/exec/AbstractExecJavaBase.java index e32ac197..96451cdc 100644 --- a/src/main/java/org/codehaus/mojo/exec/AbstractExecJavaBase.java +++ b/src/main/java/org/codehaus/mojo/exec/AbstractExecJavaBase.java @@ -472,6 +472,7 @@ protected Object newInstance(final Class bootClass) if ((constructor.getModifiers() & Modifier.PRIVATE) != 0) { throw new NoSuchMethodException("No public constructor found for " + bootClass); } + constructor.setAccessible(true); return constructor.newInstance(); } diff --git a/src/test/java/CompactClass.java b/src/test/java/CompactClass.java new file mode 100644 index 00000000..2ca4fb41 --- /dev/null +++ b/src/test/java/CompactClass.java @@ -0,0 +1,7 @@ +class CompactClass { + + + void main() { + System.out.println("Hello World"); + } +} diff --git a/src/test/java/org/codehaus/mojo/exec/ExecJavaMojoTest.java b/src/test/java/org/codehaus/mojo/exec/ExecJavaMojoTest.java index 76ae92a9..d65e19b2 100644 --- a/src/test/java/org/codehaus/mojo/exec/ExecJavaMojoTest.java +++ b/src/test/java/org/codehaus/mojo/exec/ExecJavaMojoTest.java @@ -331,6 +331,20 @@ void runWithArgs(ExecJavaMojo mojo) throws Exception { assertEquals(expectedResult, resultString); } + /** + * Test the commandline parsing facilities of the {@link AbstractExecMojo} class + * + * @throws Exception if any exception occurs + */ + @Test + @InjectMojo(goal = "java") + @MojoParameter(name = "mainClass", value = "CompactClass") + void runCompact(ExecJavaMojo mojo) throws Exception { + String resultString = execute(mojo); + + assertEquals("Hello World", resultString); + } + /** * Ensures that classpath can be filtered (exclude from plugin deps or project deps) to resolve conflicts. *