You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Radoslav Ivanov (Jira)" <ji...@apache.org> on 2020/09/02 03:37:00 UTC

[jira] [Commented] (GROOVY-9707) TypeChecked: NoSuchMethodError: DefaultGroovyMethods.plus(java.lang.String, java.lang.Object)

    [ https://issues.apache.org/jira/browse/GROOVY-9707?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17188953#comment-17188953 ] 

Radoslav Ivanov commented on GROOVY-9707:
-----------------------------------------

Please find an example, which is reproducing the problem, and let me know what is wrong:
{code:java}
import groovy.lang.GroovyClassLoader;
import groovy.transform.CompileStatic;
import org.codehaus.groovy.control.CompilerConfiguration;
import org.codehaus.groovy.control.customizers.ASTTransformationCustomizer;

import java.util.Arrays;

public class NoSuchMethod {

    public static void main(String[] args) throws Exception {

        String script = "@groovy.transform.TypeChecked\n" +
                        "class NoSuchMethodTest {\n" +
                        "    void invoke() {\n" +
                        "         \" a \" + \" b \"\n" +
                        "    }\n" +
                        "}";

        CompilerConfiguration confiuration = new CompilerConfiguration();
        confiuration.addCompilationCustomizers(new ASTTransformationCustomizer(CompileStatic.class));

        GroovyClassLoader groovyClassLoader = new GroovyClassLoader(Thread.currentThread().getContextClassLoader(), confiuration);

        Class scriptClass = groovyClassLoader.parseClass(script);

        Object scriptObject = scriptClass.getConstructor().newInstance();

        Arrays.stream(scriptClass.getMethods())
                .filter(m -> "invoke".equals(m.getName()))
                .findFirst()
                .get()
                .invoke(scriptObject, null);

    }
}
{code}

> TypeChecked: NoSuchMethodError: DefaultGroovyMethods.plus(java.lang.String, java.lang.Object)
> ---------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-9707
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9707
>             Project: Groovy
>          Issue Type: Bug
>          Components: groovy-runtime
>    Affects Versions: 3.0.5
>            Reporter: Radoslav Ivanov
>            Priority: Major
>
> Looking for advice around resolving a problem after upgrading Groovy from 2.5.9 to 3.0.5. 
> Most of the @TypeChecked scripts start hitting NoSuchMethodError when concatenating two strings ("a" + "b"), which is resolved if @TypeChecked is removed... The removed method's deprecation java doc (in 2.4.7) says to "Use the CharSequence version"...
> {code:java}
> java.lang.NoSuchMethodError: 'java.lang.String org.codehaus.groovy.runtime.DefaultGroovyMethods.plus(java.lang.String, java.lang.Object){code}
> May be I am missing something.. any advice will be appreciated...



--
This message was sent by Atlassian Jira
(v8.3.4#803005)