Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[java] AssertionError: Method should be accessible #4885

Open
Meijuh opened this issue Mar 25, 2024 · 14 comments
Open

[java] AssertionError: Method should be accessible #4885

Meijuh opened this issue Mar 25, 2024 · 14 comments
Assignees
Labels
a:bug PMD crashes or fails to analyse a file. was:unreproducible A bug report that cannot be reproduced - reporter should provide a MWE

Comments

@Meijuh
Copy link

Meijuh commented Mar 25, 2024

Affects PMD Version:

7.0.0

Description:

Errors about unreachable methods are intermittently (only 50% of the times) produced.

  1. Unknown error occurred while executing a PmdRunnable: net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTStringLiteral.getLiteralText()Chars/invokeVirtual
    Exception Context:
    [1:Rule applied on node=!debug only! [StringLiteral:9:29]"retracted"]
    at net.sourceforge.pmd.util.AssertionUtil.shouldNotReachHere(AssertionUtil.java:219)
  2. Unknown error occurred while executing a PmdRunnable: net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTNumericLiteral.getLiteralText()Chars/invokeVirtual
    Exception Context:
    [1:Rule applied on node=!debug only! [NumericLiteral:11:21]0]
  3. Unknown error occurred while executing a PmdRunnable: net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTStringLiteral.getLiteralText()Chars/invokeVirtual
    Exception Context:
    [1:Rule applied on node=!debug only! [StringLiteral:15:31]"no classes should use field injection"]

Exception Stacktrace:

  1.          at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:130)
            ....
     Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.gradle.api.plugins.quality.internal.PmdAction
             at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:287)
             ....
     Caused by: : net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTStringLiteral.getLiteralText()Chars/invokeVirtual
     Exception Context:
             [1:Rule applied on node=!debug only! [StringLiteral:9:29]"<retracted>"]
     ---------------------------------
             at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:109)
             ....
     Caused by: net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTStringLiteral.getLiteralText()Chars/invokeVirtual
     Exception Context:
             [1:Rule applied on node=!debug only! [StringLiteral:9:29]"<retracted>"]
     ---------------------------------
             at net.sourceforge.pmd.util.AssertionUtil.shouldNotReachHere(AssertionUtil.java:219)
             at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.lambda$getWrappersForClass$1(AttributeAxisIterator.java:92)
             at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.getWrappersForClass(AttributeAxisIterator.java:95)
             at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.<init>(AttributeAxisIterator.java:82)
             at net.sourceforge.pmd.lang.ast.Node.getXPathAttributesIterator(Node.java:278)
             at net.sourceforge.pmd.lang.rule.xpath.internal.AstElementNode.getLightAttributes(AstElementNode.java:105)
             at net.sourceforge.pmd.lang.rule.xpath.internal.AstElementNode.getAttributeValue(AstElementNode.java:178)
             at net.sf.saxon.expr.AttributeGetter.evaluateItem(AttributeGetter.java:127)
             at net.sf.saxon.expr.AtomicSequenceConverter.evaluateItem(AtomicSequenceConverter.java:364)
             at net.sf.saxon.expr.AtomicSequenceConverter.evaluateItem(AtomicSequenceConverter.java:28)
             at net.sf.saxon.expr.Expression.evaluateAsString(Expression.java:917)
             at net.sf.saxon.functions.StartsWith$1.effectiveBooleanValue(StartsWith.java:52)
             at net.sf.saxon.expr.FilterIterator$NonNumeric.matches(FilterIterator.java:180)
             at net.sf.saxon.expr.FilterIterator.getNextMatchingItem(FilterIterator.java:77)
             at net.sf.saxon.expr.FilterIterator.next(FilterIterator.java:63)
             at net.sourceforge.pmd.lang.rule.xpath.internal.SaxonXPathRuleQuery.evaluate(SaxonXPathRuleQuery.java:127)
             at net.sourceforge.pmd.lang.rule.xpath.XPathRule.apply(XPathRule.java:101)
             at net.sourceforge.pmd.lang.rule.RuleReference.apply(RuleReference.java:415)
             at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.applyOnIndex(RuleApplicator.java:77)
             at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.apply(RuleApplicator.java:57)
             at net.sourceforge.pmd.lang.rule.internal.RuleSets.apply(RuleSets.java:155)
             at net.sourceforge.pmd.lang.impl.PmdRunnable.processSource(PmdRunnable.java:140)
             at net.sourceforge.pmd.lang.impl.PmdRunnable.run(PmdRunnable.java:80)
    
  2.          at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:130)
             ....
     Caused by: : net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTNumericLiteral.getLiteralText()Chars/invokeVirtual
     Exception Context:
             [1:Rule applied on node=!debug only! [NumericLiteral:11:21]0]
     ---------------------------------
             at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:109)
            ....
     Caused by: net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTNumericLiteral.getLiteralText()Chars/invokeVirtual
     Exception Context:
             [1:Rule applied on node=!debug only! [NumericLiteral:11:21]0]
     ---------------------------------
             at net.sourceforge.pmd.util.AssertionUtil.shouldNotReachHere(AssertionUtil.java:219)
             at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.lambda$getWrappersForClass$1(AttributeAxisIterator.java:92)
             at [email protected]/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
             at [email protected]/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
             at [email protected]/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
             at [email protected]/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
             at [email protected]/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
             at [email protected]/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
             at [email protected]/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
             at [email protected]/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
             at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.getWrappersForClass(AttributeAxisIterator.java:95)
             at [email protected]/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
             at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.<init>(AttributeAxisIterator.java:82)
             at net.sourceforge.pmd.lang.ast.Node.getXPathAttributesIterator(Node.java:278)
             at net.sourceforge.pmd.lang.rule.xpath.internal.AstElementNode.getLightAttributes(AstElementNode.java:105)
             at net.sourceforge.pmd.lang.rule.xpath.internal.AstElementNode.getAttributeValue(AstElementNode.java:178)
             at net.sf.saxon.expr.AttributeGetter.evaluateItem(AttributeGetter.java:127)
             at net.sf.saxon.expr.ValueComparison.effectiveBooleanValue(ValueComparison.java:357)
             at net.sf.saxon.expr.FilterIterator$NonNumeric.matches(FilterIterator.java:180)
             at net.sf.saxon.expr.FilterIterator.getNextMatchingItem(FilterIterator.java:77)
             at net.sf.saxon.expr.FilterIterator.next(FilterIterator.java:63)
             at net.sf.saxon.om.FocusTrackingIterator.next(FocusTrackingIterator.java:76)
             at net.sf.saxon.expr.FilterIterator.getNextMatchingItem(FilterIterator.java:76)
             at net.sf.saxon.expr.FilterIterator.next(FilterIterator.java:63)
             at net.sf.saxon.om.FocusTrackingIterator.next(FocusTrackingIterator.java:76)
             at net.sf.saxon.expr.FilterIterator.getNextMatchingItem(FilterIterator.java:76)
             at net.sf.saxon.expr.FilterIterator.next(FilterIterator.java:63)
             at net.sourceforge.pmd.lang.rule.xpath.internal.SaxonXPathRuleQuery.evaluate(SaxonXPathRuleQuery.java:127)
             at net.sourceforge.pmd.lang.rule.xpath.XPathRule.apply(XPathRule.java:101)
             at net.sourceforge.pmd.lang.rule.RuleReference.apply(RuleReference.java:415)
             at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.applyOnIndex(RuleApplicator.java:77)
             at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.apply(RuleApplicator.java:57)
             at net.sourceforge.pmd.lang.rule.internal.RuleSets.apply(RuleSets.java:155)
             at net.sourceforge.pmd.lang.impl.PmdRunnable.processSource(PmdRunnable.java:140)
             at net.sourceforge.pmd.lang.impl.PmdRunnable.run(PmdRunnable.java:80)
             at [email protected]/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
             at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:264)
             ... 3 more```
  3. see next comment, can't post here due to character limit

Code Sample demonstrating the issue:

I'm not a 100% sure, but these lines of code seem to be involved in producing the errors.

    @AnalyzeClasses(packages = {"<retracted-package-1>", "<retracted-package-2>"})
    assertNotEquals(0, hashCode());
    assertThatThrownBy(() -> MainArchUnitTest.NO_CLASSES_SHOULD_USE_FIELD_INJECTION.check(jc)).hasMessageContaining("no classes should use field injection");

Steps to reproduce:

Please provide detailed steps for how we can reproduce the bug.

  1. ./gradlew clean build --stacktrace

Running PMD through: Gradle

JDK 11

@Meijuh Meijuh added the a:bug PMD crashes or fails to analyse a file. label Mar 25, 2024
@Meijuh
Copy link
Author

Meijuh commented Mar 25, 2024

Third exception:

            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:130)
            ...
    Caused by: : net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTStringLiteral.getLiteralText()Chars/invokeVirtual
    Exception Context:
            [1:Rule applied on node=!debug only! [StringLiteral:15:31]"no classes should use field injection"]
    ---------------------------------
            at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:109)
            ...
    Caused by: net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTStringLiteral.getLiteralText()Chars/invokeVirtual
    Exception Context:
            [1:Rule applied on node=!debug only! [StringLiteral:15:31]"no classes should use field injection"]
    ---------------------------------
            at net.sourceforge.pmd.util.AssertionUtil.shouldNotReachHere(AssertionUtil.java:219)
            at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.lambda$getWrappersForClass$1(AttributeAxisIterator.java:92)
            at [email protected]/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
            at [email protected]/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
            at [email protected]/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
            at [email protected]/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
            at [email protected]/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
            at [email protected]/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
            at [email protected]/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
            at [email protected]/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
            at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.getWrappersForClass(AttributeAxisIterator.java:95)
            at [email protected]/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1737)
            at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.<init>(AttributeAxisIterator.java:82)
            at net.sourceforge.pmd.lang.ast.Node.getXPathAttributesIterator(Node.java:278)
            at net.sourceforge.pmd.lang.rule.xpath.internal.AstElementNode.getLightAttributes(AstElementNode.java:105)
            at net.sourceforge.pmd.lang.rule.xpath.internal.AstElementNode.getAttributeValue(AstElementNode.java:178)
            at net.sf.saxon.expr.AttributeGetter.evaluateItem(AttributeGetter.java:127)
            at net.sf.saxon.expr.AtomicSequenceConverter.evaluateItem(AtomicSequenceConverter.java:364)
            at net.sf.saxon.expr.AtomicSequenceConverter.evaluateItem(AtomicSequenceConverter.java:28)
            at net.sf.saxon.expr.Expression.evaluateAsString(Expression.java:917)
            at net.sf.saxon.functions.StartsWith$1.effectiveBooleanValue(StartsWith.java:52)
            at net.sf.saxon.expr.FilterIterator$NonNumeric.matches(FilterIterator.java:180)
            at net.sf.saxon.expr.FilterIterator.getNextMatchingItem(FilterIterator.java:77)
            at net.sf.saxon.expr.FilterIterator.next(FilterIterator.java:63)
            at net.sourceforge.pmd.lang.rule.xpath.internal.SaxonXPathRuleQuery.evaluate(SaxonXPathRuleQuery.java:127)
            at net.sourceforge.pmd.lang.rule.xpath.XPathRule.apply(XPathRule.java:101)
            at net.sourceforge.pmd.lang.rule.RuleReference.apply(RuleReference.java:415)
            at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.applyOnIndex(RuleApplicator.java:77)
            at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.apply(RuleApplicator.java:57)
            at net.sourceforge.pmd.lang.rule.internal.RuleSets.apply(RuleSets.java:155)
            at net.sourceforge.pmd.lang.impl.PmdRunnable.processSource(PmdRunnable.java:140)
            at net.sourceforge.pmd.lang.impl.PmdRunnable.run(PmdRunnable.java:80)
            at [email protected]/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
            at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:264)
            ... 3 more

@adangel adangel self-assigned this Mar 25, 2024
@adangel
Copy link
Member

adangel commented Mar 25, 2024

So, I think this is around this problem:

  • We try to call (actually, just get a method handle) getLiteralText(), which is implemented in AbstractLiteral, but defined in ASTLiteral.
  • It is true, that "IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTStringLiteral.getLiteralText()Chars/invokeVirtual" - the method is on AbstractLiteral
  • AbstractLiteral is package-private
  • The crucial code seems to be:
    MethodWrapper(Method m, Class<?> nodeClass) throws IllegalAccessException, NoSuchMethodException {
    this.method = m;
    this.name = truncateMethodName(m.getName());
    if (!Modifier.isPublic(m.getDeclaringClass().getModifiers())) {
    // This is a public method of a non-public class.
    // To call it from reflection we need to call it via invokevirtual,
    // whereas the default handle would use invokespecial.
    MethodType methodType = MethodType.methodType(m.getReturnType(), emptyList());
    this.methodHandle = MethodWrapper.LOOKUP.findVirtual(nodeClass, m.getName(), methodType).asType(GETTER_TYPE);
    } else {
    this.methodHandle = LOOKUP.unreflect(m).asType(GETTER_TYPE);
    }
    }

This fails with no such method...

Unfortunately, I couldn't yet reproduce the problem....

@adangel adangel added this to the 7.0.1 milestone Mar 25, 2024
@jsotuyod
Copy link
Member

jsotuyod commented Mar 26, 2024

@Meijuh would you mind sharing the output of java -version?

I have a suspicion as to what may be triggering this, but would love to confirm.

I believe this is down to a JVM bug, where some versions choke on scenarios similar to ours…

In short, ASTStringLiteral inherits getLiteralText multiple times…

  • It implements ASTLiteral directly (where the method is declared)
  • It extends AbstractLiteral (where the method is implemented)
    • It implements ASTLiteral indirectly through AbstractLiteral

The exact same thing happens to all other literal types, such as ASTNumericLiteral.

I've seen some reports on JDK where similar scenarios caused failures consistent with this stacktrace. They were mostly reported on older JVMs, but that doesn't mean Java 11 releases existing at that time were not affected.

If this is true:

  1. Updating your JVM to a newer version (even a Java 11 minor, such as 11.0.22) should make the issue go away.
  2. From our end, removing these redundancies (ie: removing the direct ASTLiteral implementation and leaving it only indirectly through AbstractLiteral) should make this work on all versions.

@Meijuh
Copy link
Author

Meijuh commented Mar 27, 2024

openjdk version "11.0.22" 2024-01-16
OpenJDK Runtime Environment (Red_Hat-11.0.22.0.7-1) (build 11.0.22+7)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.22.0.7-1) (build 11.0.22+7, mixed mode, sharing)

I'm quite sure I was using this version when I reported this issue, but now when I'm trying to reproduce the issue, I can't... I will report whenever the problem pops up again.

@adangel adangel changed the title [java] This should be unreachable errors produced [java] AssertionFailed: This should be unreachable errors produced Mar 29, 2024
@adangel adangel changed the title [java] AssertionFailed: This should be unreachable errors produced [java] AssertionError: This should be unreachable errors produced Mar 29, 2024
@adangel adangel changed the title [java] AssertionError: This should be unreachable errors produced [java] AssertionError: Method should be accessible Mar 29, 2024
@adangel
Copy link
Member

adangel commented Mar 29, 2024

It could be a JVM issue, yes. 11.0.22 is the current version. Searching the bug database, I only found old problems regarding this constellation, e.g. https://bugs.openjdk.org/browse/JDK-7087658.

We unfortunately don't log the causing exception. I'll create a PR to fix the logging of the IllegalAccessException, so that we have the full stacktrace, in case this happens again. Then maybe we can see, what the underlying issue might be - if any.

Is this a bigger project, long running PMD analysis? I'm asking, because as far as I read, some bugs are only appearing when the hotspot compiler comes in and has a bug, so that this problem would never be reproducible with a simple test case. Gradle uses a gradle daemon process, which gives the opportunity for the JVM to do all kinds of optimizations, and maybe only then this problem shows after a while. And it disappears when the JVM is started fresh.

Let's keep this issue open and see, if this problem happens again.

adangel added a commit to adangel/pmd that referenced this issue Mar 29, 2024
This is a test case for pmd#4885, but doesn't reproduce
the problem.
@jsotuyod jsotuyod added the needs:pmd7-revalidation The issue hasn't yet been retested vs PMD 7 and may be stale label Apr 2, 2024
@dmiales
Copy link

dmiales commented Apr 18, 2024

reproduced on azul zulu 11.0.19
repaired on version azul zulu 11.0.23

@jsotuyod jsotuyod removed the needs:pmd7-revalidation The issue hasn't yet been retested vs PMD 7 and may be stale label Apr 20, 2024
@adangel adangel removed this from the 7.1.0 milestone Apr 25, 2024
@adangel adangel added the was:unreproducible A bug report that cannot be reproduced - reporter should provide a MWE label Apr 25, 2024
@adangel
Copy link
Member

adangel commented Apr 25, 2024

I'm closing this now as the problem is not reproducible. It might have been fixed already in the latest JDK versions.

@adangel adangel closed this as not planned Won't fix, can't repro, duplicate, stale Apr 25, 2024
@sabberworm
Copy link

I still have this even with azul zulu 11.0.23

@adangel
Copy link
Member

adangel commented Apr 26, 2024

@sabberworm Thanks for the info.
Which version of PMD are you using? Please use PMD 7.1.0 (released today), which hopefully gives a bit more information when this error occurs (ede73fa).
And can you reliably reproduce it? If so, that would be fantastic...

@adangel adangel reopened this Apr 26, 2024
@sabberworm
Copy link

sabberworm commented May 15, 2024

Back when I wrote in, I wasn’t yet using PMD 7.1.0 but now I’ve upgraded and I’m seeing the issue sporadically still (alas, not reproducibly).

I am using gradle with the quality plugin and that is running PMD.

Stack Trace
* What went wrong:
Execution failed for task ':core:pmdMain'.
> net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTNumericLiteral.getLiteralText()Chars/invokeVirtual
  Exception Context:
        [1:Rule applied on node=!debug only! [NumericLiteral:146:30]0]
  ---------------------------------

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':core:pmdMain'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:188)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:186)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:174)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: : net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTNumericLiteral.getLiteralText()Chars/invokeVirtual
Exception Context:
        [1:Rule applied on node=!debug only! [NumericLiteral:146:30]0]
---------------------------------
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:109)
        at groovy.util.AntBuilder.performTask(AntBuilder.java:335)
        at groovy.util.AntBuilder.nodeCompleted(AntBuilder.java:280)
        at org.gradle.api.internal.project.ant.BasicAntBuilder.nodeCompleted(BasicAntBuilder.java:90)
        at jdk.internal.reflect.GeneratedMethodAccessor2044.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
        at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:484)
        at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:196)
        at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:163)
        at org.gradle.api.internal.project.antbuilder.AntBuilderDelegate.nodeCompleted(AntBuilderDelegate.java:124)
        at groovy.util.BuilderSupport.doInvokeMethod(BuilderSupport.java:160)
        at groovy.util.BuilderSupport.invokeMethod(BuilderSupport.java:74)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:44)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
        at org.gradle.api.plugins.quality.internal.PmdInvoker$_runPmd_closure1.doCall(PmdInvoker.groovy:119)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
        at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1035)
        at groovy.lang.Closure.call(Closure.java:412)
        at groovy.lang.Closure.call(Closure.java:428)
        at org.gradle.util.internal.ClosureBackedAction.execute(ClosureBackedAction.java:72)
        at org.gradle.util.internal.ClosureBackedAction.execute(ClosureBackedAction.java:53)
        at org.gradle.api.internal.project.antbuilder.DefaultIsolatedAntBuilder$2.execute(DefaultIsolatedAntBuilder.java:160)
        at org.gradle.api.internal.project.antbuilder.DefaultIsolatedAntBuilder$2.execute(DefaultIsolatedAntBuilder.java:142)
        at org.gradle.api.internal.project.antbuilder.ClassPathToClassLoaderCache.withCachedClassLoader(ClassPathToClassLoaderCache.java:135)
        at org.gradle.api.internal.project.antbuilder.DefaultIsolatedAntBuilder.execute(DefaultIsolatedAntBuilder.java:136)
        at org.gradle.api.internal.project.IsolatedAntBuilder$execute$0.call(Unknown Source)
        at org.gradle.api.plugins.quality.internal.PmdInvoker.runPmd(PmdInvoker.groovy:69)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
        at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1529)
        at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:1003)
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(ScriptBytecodeAdapter.java:180)
        at org.gradle.api.plugins.quality.internal.PmdInvoker$1.methodMissing(PmdInvoker.groovy)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
        at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:953)
        at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1347)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1270)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:61)
        at org.gradle.api.plugins.quality.internal.PmdInvoker$1.create(PmdInvoker.groovy:59)
        at org.gradle.api.plugins.quality.internal.PmdInvoker$1.create(PmdInvoker.groovy)
        at org.gradle.internal.SystemProperties.withSystemProperty(SystemProperties.java:123)
        at org.gradle.internal.SystemProperties$withSystemProperty.call(Unknown Source)
        at org.gradle.api.plugins.quality.internal.PmdInvoker.invoke(PmdInvoker.groovy:56)
        at org.gradle.api.plugins.quality.Pmd.run(Pmd.java:97)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:506)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:74)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:74)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:491)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:474)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:106)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:271)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:249)
        at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:83)
        at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:37)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
        at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:47)
        at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:37)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
        at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:50)
        at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
        at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
        at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
        at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
        at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:54)
        at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:35)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:60)
        at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:27)
        at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:174)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:74)
        at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:45)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:40)
        at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:29)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
        at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:99)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:92)
        at java.base/java.util.Optional.map(Optional.java:265)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
        at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:85)
        at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:42)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:91)
        at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:106)
        at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:51)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:72)
        at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:46)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:86)
        at java.base/java.util.Optional.orElseGet(Optional.java:369)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:86)
        at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:32)
        at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:43)
        at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:31)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$2.withWorkspace(ExecuteActionsTaskExecuter.java:284)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
        at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
        at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
        at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
        at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:185)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:174)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:408)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:395)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:388)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:374)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: net.sourceforge.pmd.util.ContextedAssertionError: This should be unreachable: Method should be accessible java.lang.IllegalAccessException: no such method: net.sourceforge.pmd.lang.java.ast.ASTNumericLiteral.getLiteralText()Chars/invokeVirtual
Exception Context:
        [1:Rule applied on node=!debug only! [NumericLiteral:146:30]0]
---------------------------------
        at net.sourceforge.pmd.util.AssertionUtil.shouldNotReachHere(AssertionUtil.java:219)
        at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.lambda$getWrappersForClass$1(AttributeAxisIterator.java:92)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
        at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
        at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.getWrappersForClass(AttributeAxisIterator.java:95)
        at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1737)
        at net.sourceforge.pmd.lang.rule.xpath.impl.AttributeAxisIterator.<init>(AttributeAxisIterator.java:82)
        at net.sourceforge.pmd.lang.ast.Node.getXPathAttributesIterator(Node.java:278)
        at net.sourceforge.pmd.lang.rule.xpath.internal.AstElementNode.getLightAttributes(AstElementNode.java:105)
        at net.sourceforge.pmd.lang.rule.xpath.internal.AstElementNode.getAttributeValue(AstElementNode.java:178)
        at net.sf.saxon.expr.AttributeGetter.evaluateItem(AttributeGetter.java:127)
        at net.sf.saxon.expr.ValueComparison.effectiveBooleanValue(ValueComparison.java:357)
        at net.sf.saxon.expr.FilterIterator$NonNumeric.matches(FilterIterator.java:180)
        at net.sf.saxon.expr.FilterIterator.getNextMatchingItem(FilterIterator.java:77)
        at net.sf.saxon.expr.FilterIterator.next(FilterIterator.java:63)
        at net.sf.saxon.om.FocusTrackingIterator.next(FocusTrackingIterator.java:76)
        at net.sf.saxon.expr.FilterIterator.getNextMatchingItem(FilterIterator.java:76)
        at net.sf.saxon.expr.FilterIterator.next(FilterIterator.java:63)
        at net.sf.saxon.om.FocusTrackingIterator.next(FocusTrackingIterator.java:76)
        at net.sf.saxon.expr.FilterIterator.getNextMatchingItem(FilterIterator.java:76)
        at net.sf.saxon.expr.FilterIterator.next(FilterIterator.java:63)
        at net.sourceforge.pmd.lang.rule.xpath.internal.SaxonXPathRuleQuery.evaluate(SaxonXPathRuleQuery.java:127)
        at net.sourceforge.pmd.lang.rule.xpath.XPathRule.apply(XPathRule.java:101)
        at net.sourceforge.pmd.lang.rule.RuleReference.apply(RuleReference.java:415)
        at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.applyOnIndex(RuleApplicator.java:77)
        at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.apply(RuleApplicator.java:57)
        at net.sourceforge.pmd.lang.rule.internal.RuleSets.apply(RuleSets.java:155)
        at net.sourceforge.pmd.lang.impl.PmdRunnable.processSource(PmdRunnable.java:140)
        at net.sourceforge.pmd.lang.impl.PmdRunnable.run(PmdRunnable.java:80)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        ... 1 more

Also, it always happens on a different token. Sometimes a string literal, other times a number literal.

@jsotuyod
Copy link
Member

@sabberworm thanks. Have you tried a different JRE other than Zulu?

@adangel
Copy link
Member

adangel commented May 16, 2024

@sabberworm The error message in the stack trace indicates, that this was still using PMD 7.0.0. Please post a new stacktrace with PMD 7.1.0, when this happens again.
(There should be more stacktraces of the root exceptions and the message should be "Method 'xxx' should be accessible, but: xxxx", see ede73fa)

@oowekyala
Copy link
Member

From our end, removing these redundancies (ie: removing the direct ASTLiteral implementation and leaving it only indirectly through AbstractLiteral) should make this work on all versions.

We should really do that for 7.2.0

oowekyala added a commit to oowekyala/pmd that referenced this issue May 16, 2024
oowekyala added a commit to oowekyala/pmd that referenced this issue May 16, 2024
@sabberworm
Copy link

@adangel Ah yes, you’re right I did still use the old version. I had a manual reference to the dependency, so just changing the version in the quality plugin didn’t actually update PMD, my bad. I tried a few times but couldn’t trigger the problem with 7.1.0. Will report back when I do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a:bug PMD crashes or fails to analyse a file. was:unreproducible A bug report that cannot be reproduced - reporter should provide a MWE
Projects
None yet
Development

No branches or pull requests

6 participants