[ https://issues.apache.org/jira/browse/GROOVY-11706?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18000565#comment-18000565 ]
Xiaotian Ma commented on GROOVY-11706: -------------------------------------- [~blackdrag] Thanks a lot for your help! Actually the CLI Compiler is working good but the Compiler loaded from my classloader is not working. !screenshot-1.png! I am using classloader to compile some classes with these two annotaion classes, but I recieved the following error: {code:java} startup failed: /tmp/0078a4007b6693f4/0078a400af6f717f/Afik05i.groovy: 3: Annotation @org.jetbrains.annotations.NotNull is not allowed on element TYPE_PARAMETER @ line 3, column 50. ik05i</*@NotNull*/ T0 extends @NotNull O ^ /tmp/0078a4007b6693f4/0078a400af6f717f/Afik05i.groovy: 3: Annotation @org.jetbrains.annotations.NotNull is not allowed on element TYPE_PARAMETER @ line 3, column 91. ject, /*@NotNull*/ T1 extends @NotNull O ^ /tmp/0078a4007b6693f4/0078a400af6f717f/Afik05i.groovy: 3: Annotation @org.jetbrains.annotations.NotNull is not allowed on element TYPE_PARAMETER @ line 3, column 132. ject, /*@NotNull*/ T2 extends @NotNull O ^ /tmp/0078a4007b6693f4/0078a400af6f717f/QHf0.groovy: 11: Annotation @org.jetbrains.annotations.NotNull is not allowed on element TYPE_PARAMETER @ line 11, column 86. 4 extends /*@NotNull*/ Object>@NotNull T ^ 4 errors {code} That's very confused for me. The following is the full code: (Actually I am developing a fuzzing tool to do a differential testing, so I need load two different version of Groovy compiler) {code:java} // FILE: Afik05i.groovy import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public interface Afik05i</*@NotNull*/ T0 extends @NotNull Object, /*@NotNull*/ T1 extends @NotNull Object, /*@NotNull*/ T2 extends @NotNull Object> { public abstract @Nullable T0 k77OuG(/*@NotNull*/ Object unE1QEP); public abstract /*@NotNull*/ Object f5N(@Nullable T2 fskP); } // FILE: D8HLBB.java import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public final class D8HLBB extends Object { public /*@NotNull*/ D8HLBB vRkIOB(/*@NotNull*/ D8HLBB tWLGEIFu, /*@NotNull*/ D8HLBB cCtb) { throw new RuntimeException(); } public <T3 extends /*@NotNull*/ Object, T4 extends /*@NotNull*/ Object, T5 extends /*@NotNull*/ Object>/*@NotNull*/ Afik05i</*@NotNull*/ Void, /*@NotNull*/ Void, /*@NotNull*/ Object> bbZRuLGZ(@NotNull T5 qav, /*@NotNull*/ Afik05i</*@NotNull*/ D8HLBB, /*@NotNull*/ Object, /*@NotNull*/ Void> iMF40) { throw new RuntimeException(); } public /*@NotNull*/ Afik05i</*@NotNull*/ Void, /*@NotNull*/ Object, /*@NotNull*/ D8HLBB> pF8NLCd() { throw new RuntimeException(); } } // FILE: Uxw.groovy import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public interface Uxw { public abstract /*@Nullable*/ D8HLBB bx0gL3IW(); public abstract /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu); } // FILE: AbcDQcm.groovy import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public interface AbcDQcm extends Uxw, Afik05i<Uxw, D8HLBB, Void> { public abstract /*@Nullable*/ Afik05i<Uxw, Uxw, Uxw> ydXR(/*@Nullable*/ D8HLBB mrjPpP, /*@NotNull*/ Uxw hPcMB8O, /*@NotNull*/ Afik05i</*@NotNull*/ Void, /*@NotNull*/ Object, /*@NotNull*/ D8HLBB> ch3Df4sx); public abstract /*@Nullable*/ D8HLBB v20h(/*@NotNull*/ AbcDQcm nMpU7C, /*@NotNull*/ D8HLBB qAGwAjal); public default /*@Nullable*/ D8HLBB bx0gL3IW() { throw new RuntimeException(); } public default /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) { throw new RuntimeException(); } public default @Nullable Uxw k77OuG(/*@NotNull*/ Object unE1QEP) { throw new RuntimeException(); } public default /*@NotNull*/ Object f5N(@Nullable Void fskP) { throw new RuntimeException(); } } // FILE: FTElbomP.groovy import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class FTElbomP extends Object { public final <T6 extends /*@NotNull*/ Object, T7 extends /*@NotNull*/ Object, T8 extends /*@NotNull*/ Object>/*@NotNull*/ Object jHyAhWPc(/*@NotNull*/ FTElbomP uPm, @Nullable T7 pPRmkri) { throw new RuntimeException(); } public final /*@NotNull*/ FTElbomP n4A0LgP(/*@Nullable*/ Object z0aXf) { throw new RuntimeException(); } } // FILE: FCcz.java import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class FCcz</*@NotNull*/ T9 extends @NotNull Object> extends Object implements Afik05i<D8HLBB, Object, Object>, Uxw { public /*@NotNull*/ void oZ3hdL(/*@Nullable*/ FCcz<Uxw> kNx1) { throw new RuntimeException(); } public final <T10 extends /*@NotNull*/ Object, T11 extends /*@NotNull*/ Object, T12 extends /*@NotNull*/ Object>/*@Nullable*/ Object xUgmrN(/*@NotNull*/ FTElbomP vcl0yFa) { throw new RuntimeException(); } public final /*@NotNull*/ FTElbomP v0YMc() { throw new RuntimeException(); } public @Nullable D8HLBB k77OuG(/*@NotNull*/ Object unE1QEP) { throw new RuntimeException(); } public /*@NotNull*/ Object f5N(@Nullable Object fskP) { throw new RuntimeException(); } public final /*@Nullable*/ D8HLBB bx0gL3IW() { throw new RuntimeException(); } public /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) { throw new RuntimeException(); } } // FILE: IPbD33Gd.groovy import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class IPbD33Gd extends FTElbomP implements Uxw, Afik05i<AbcDQcm, IPbD33Gd, AbcDQcm> { public /*@NotNull*/ AbcDQcm iea(/*@Nullable*/ Afik05i<IPbD33Gd, Uxw, FTElbomP> ai3kd, /*@Nullable*/ FCcz<AbcDQcm> o8LNY) { throw new RuntimeException(); } public final /*@NotNull*/ IPbD33Gd h9SHvhKU(/*@NotNull*/ D8HLBB cEhgcX, /*@NotNull*/ Object zX5Vl) { throw new RuntimeException(); } public final /*@NotNull*/ void eO48() { throw new RuntimeException(); } public /*@Nullable*/ D8HLBB bx0gL3IW() { throw new RuntimeException(); } public final /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) { throw new RuntimeException(); } public @Nullable AbcDQcm k77OuG(/*@NotNull*/ Object unE1QEP) { throw new RuntimeException(); } public /*@NotNull*/ Object f5N(@Nullable AbcDQcm fskP) { throw new RuntimeException(); } // stub /* public final <T6 extends @NotNull Object, T7 extends @NotNull Object, T8 extends @NotNull Object>@NotNull Object jHyAhWPc(@NotNull FTElbomP uPm, @Nullable T7 pPRmkri) { throw new RuntimeException(); } */ // stub /* public final @NotNull FTElbomP n4A0LgP(@Nullable Object z0aXf) { throw new RuntimeException(); } */ } // FILE: SdI44pvC.java import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public abstract class SdI44pvC extends FCcz<AbcDQcm> { public /*@NotNull*/ AbcDQcm aIBVNHo(/*@NotNull*/ D8HLBB lRqk, /*@Nullable*/ Afik05i<SdI44pvC, SdI44pvC, AbcDQcm> aZU) { throw new RuntimeException(); } // stub /* public final <T10 extends @NotNull Object, T11 extends @NotNull Object, T12 extends @NotNull Object>@Nullable Object xUgmrN(@NotNull FTElbomP vcl0yFa) { throw new RuntimeException(); } */ // stub /* public final @NotNull FTElbomP v0YMc() { throw new RuntimeException(); } */ // stub /* public final @Nullable D8HLBB bx0gL3IW() { throw new RuntimeException(); } */ public final /*@NotNull*/ void oZ3hdL(/*@Nullable*/ FCcz<Uxw> kNx1) { throw new RuntimeException(); } public abstract @Nullable D8HLBB k77OuG(/*@NotNull*/ Object unE1QEP); // stub /* public @NotNull Object f5N(@Nullable Object fskP) { throw new RuntimeException(); } */ public final /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) { throw new RuntimeException(); } } // FILE: XZfDDfcw.groovy import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class XZfDDfcw extends Object implements Afik05i<Void, FTElbomP, D8HLBB>, Uxw { public final /*@NotNull*/ AbcDQcm pobFBuTw() { throw new RuntimeException(); } public /*@Nullable*/ AbcDQcm me7Y5o(/*@Nullable*/ FCcz<AbcDQcm> tAP3TV, /*@Nullable*/ D8HLBB hMayq) { throw new RuntimeException(); } public /*@NotNull*/ FTElbomP awYhECi(/*@NotNull*/ FCcz</*@NotNull*/ AbcDQcm> fBm, /*@NotNull*/ Object vwv) { throw new RuntimeException(); } public @Nullable Void k77OuG(/*@NotNull*/ Object unE1QEP) { throw new RuntimeException(); } public final /*@NotNull*/ Object f5N(@Nullable D8HLBB fskP) { throw new RuntimeException(); } public /*@Nullable*/ D8HLBB bx0gL3IW() { throw new RuntimeException(); } public /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) { throw new RuntimeException(); } } // FILE: FpyD.java import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public interface FpyD { public abstract <T13 extends /*@NotNull*/ Object, T14 extends /*@NotNull*/ Object>@NotNull T13 uhctwkrc(/*@Nullable*/ Uxw aT162G, /*@NotNull*/ Afik05i</*@NotNull*/ FpyD, /*@NotNull*/ IPbD33Gd, /*@NotNull*/ AbcDQcm> n51F); public abstract /*@Nullable*/ Afik05i<FpyD, Void, Object> noX(/*@NotNull*/ IPbD33Gd dCh, /*@NotNull*/ FCcz</*@NotNull*/ XZfDDfcw> rkCon, /*@NotNull*/ Afik05i</*@NotNull*/ Uxw, /*@NotNull*/ FpyD, /*@NotNull*/ Uxw> cD4hj5); } // FILE: WH5hX.java import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public final class WH5hX extends XZfDDfcw implements FpyD, Uxw, Afik05i<Void, FTElbomP, D8HLBB> { public <T15 extends /*@NotNull*/ Object>/*@Nullable*/ FpyD qRduv(/*@Nullable*/ FTElbomP o1Y, /*@NotNull*/ IPbD33Gd feX3, /*@Nullable*/ FpyD z88Eh4) { throw new RuntimeException(); } public <T16 extends /*@NotNull*/ Object>@NotNull T16 rHDMC(/*@Nullable*/ FCcz<IPbD33Gd> mYQ2F, /*@Nullable*/ AbcDQcm iZWaX) { throw new RuntimeException(); } public <T17 extends /*@NotNull*/ Object, T18 extends /*@NotNull*/ Object, T19 extends /*@NotNull*/ Object>/*@Nullable*/ XZfDDfcw vBXRj(@NotNull T18 ilNGy) { throw new RuntimeException(); } public <T13 extends /*@NotNull*/ Object, T14 extends /*@NotNull*/ Object>@NotNull T13 uhctwkrc(/*@Nullable*/ Uxw aT162G, /*@NotNull*/ Afik05i</*@NotNull*/ FpyD, /*@NotNull*/ IPbD33Gd, /*@NotNull*/ AbcDQcm> n51F) { throw new RuntimeException(); } public final /*@Nullable*/ Afik05i<FpyD, Void, Object> noX(/*@NotNull*/ IPbD33Gd dCh, /*@NotNull*/ FCcz</*@NotNull*/ XZfDDfcw> rkCon, /*@NotNull*/ Afik05i</*@NotNull*/ Uxw, /*@NotNull*/ FpyD, /*@NotNull*/ Uxw> cD4hj5) { throw new RuntimeException(); } // stub /* public final @NotNull Object f5N(@Nullable D8HLBB fskP) { throw new RuntimeException(); } */ // stub /* public final @NotNull AbcDQcm pobFBuTw() { throw new RuntimeException(); } */ // stub /* public @Nullable D8HLBB bx0gL3IW() { throw new RuntimeException(); } */ // stub /* public @NotNull D8HLBB thHin(@NotNull Uxw hZu) { throw new RuntimeException(); } */ // stub /* public @Nullable Void k77OuG(@NotNull Object unE1QEP) { throw new RuntimeException(); } */ public final /*@Nullable*/ AbcDQcm me7Y5o(/*@Nullable*/ FCcz<AbcDQcm> tAP3TV, /*@Nullable*/ D8HLBB hMayq) { throw new RuntimeException(); } public final /*@NotNull*/ FTElbomP awYhECi(/*@NotNull*/ FCcz</*@NotNull*/ AbcDQcm> fBm, /*@NotNull*/ Object vwv) { throw new RuntimeException(); } } // FILE: YGxQ1.java import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public final class YGxQ1</*@NotNull*/ T20 extends @NotNull Object> extends Object implements Afik05i<Void, FpyD, Void> { public /*@NotNull*/ FTElbomP qMzET() { throw new RuntimeException(); } public final @Nullable Void k77OuG(/*@NotNull*/ Object unE1QEP) { throw new RuntimeException(); } public final /*@NotNull*/ Object f5N(@Nullable Void fskP) { throw new RuntimeException(); } } // FILE: QHf0.groovy import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public interface QHf0 extends Afik05i<AbcDQcm, Uxw, Object>, FpyD, Uxw { public abstract <T21 extends /*@NotNull*/ Object>/*@NotNull*/ AbcDQcm zFgJuUf2(); public default @Nullable AbcDQcm k77OuG(/*@NotNull*/ Object unE1QEP) { throw new RuntimeException(); } public default /*@NotNull*/ Object f5N(@Nullable Object fskP) { throw new RuntimeException(); } public default <T13 extends /*@NotNull*/ Object, T14 extends /*@NotNull*/ Object>@NotNull T13 uhctwkrc(/*@Nullable*/ Uxw aT162G, /*@NotNull*/ Afik05i</*@NotNull*/ FpyD, /*@NotNull*/ IPbD33Gd, /*@NotNull*/ AbcDQcm> n51F) { throw new RuntimeException(); } public default /*@Nullable*/ Afik05i<FpyD, Void, Object> noX(/*@NotNull*/ IPbD33Gd dCh, /*@NotNull*/ FCcz</*@NotNull*/ XZfDDfcw> rkCon, /*@NotNull*/ Afik05i</*@NotNull*/ Uxw, /*@NotNull*/ FpyD, /*@NotNull*/ Uxw> cD4hj5) { throw new RuntimeException(); } public default /*@Nullable*/ D8HLBB bx0gL3IW() { throw new RuntimeException(); } public default /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) { throw new RuntimeException(); } } // FILE: W5MT.groovy import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public final class W5MT extends FCcz<SdI44pvC> implements Afik05i<D8HLBB, Object, Object> { public final <T22 extends /*@NotNull*/ Object, T23 extends /*@NotNull*/ Object>/*@Nullable*/ FpyD c9drZAvF(/*@NotNull*/ FpyD msWskin, /*@NotNull*/ Uxw wxiSQ) { throw new RuntimeException(); } // stub /* public final <T10 extends @NotNull Object, T11 extends @NotNull Object, T12 extends @NotNull Object>@Nullable Object xUgmrN(@NotNull FTElbomP vcl0yFa) { throw new RuntimeException(); } */ // stub /* public final @NotNull FTElbomP v0YMc() { throw new RuntimeException(); } */ // stub /* public final @Nullable D8HLBB bx0gL3IW() { throw new RuntimeException(); } */ // stub /* public @Nullable D8HLBB k77OuG(@NotNull Object unE1QEP) { throw new RuntimeException(); } */ // stub /* public @NotNull Object f5N(@Nullable Object fskP) { throw new RuntimeException(); } */ public final /*@NotNull*/ void oZ3hdL(/*@Nullable*/ FCcz<Uxw> kNx1) { throw new RuntimeException(); } public final /*@NotNull*/ D8HLBB thHin(/*@NotNull*/ Uxw hZu) { throw new RuntimeException(); } } // FILE: YYMMAZVX.groovy import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public final class YYMMAZVX extends FTElbomP { public /*@NotNull*/ WH5hX it2roqG6() { throw new RuntimeException(); } // stub /* public final <T6 extends @NotNull Object, T7 extends @NotNull Object, T8 extends @NotNull Object>@NotNull Object jHyAhWPc(@NotNull FTElbomP uPm, @Nullable T7 pPRmkri) { throw new RuntimeException(); } */ // stub /* public final @NotNull FTElbomP n4A0LgP(@Nullable Object z0aXf) { throw new RuntimeException(); } */ } // FILE: JavaTopLevelContainer.java import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public final class JavaTopLevelContainer { } // FILE: NotNull.java package org.jetbrains.annotations; import java.lang.annotation.*; // org.jetbrains.annotations used in the compiler is version 13, whose @NotNull does not support the TYPE_USE target (version 15 does). // We're using our own @org.jetbrains.annotations.NotNull for testing purposes. @Documented @Retention(RetentionPolicy.CLASS) @Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE, ElementType.TYPE_USE}) public @interface NotNull { } // FILE: Nullable.java package org.jetbrains.annotations; import java.lang.annotation.*; // org.jetbrains.annotations used in the compiler is version 13, whose @Nullable does not support the TYPE_USE target (version 15 does). // We're using our own @org.jetbrains.annotations.Nullable for testing purposes. @Documented @Retention(RetentionPolicy.CLASS) @Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE, ElementType.TYPE_USE}) public @interface Nullable { } {code} > How to run Groovy compiler via class loader without altering thread context > classloader? > ---------------------------------------------------------------------------------------- > > Key: GROOVY-11706 > URL: https://issues.apache.org/jira/browse/GROOVY-11706 > Project: Groovy > Issue Type: Question > Components: Compiler > Reporter: Xiaotian Ma > Priority: Major > Attachments: screenshot-1.png > > > When using direct reflection access to the main method of the > FileSystemCompiler class, some transformer classes do not seem to load > correctly. (The error is: Could not find class for Transformation Processor > org.codehaus.groovy.transform.trait.TraitASTTransformation declared by > groovy.transform.Trait) > My original requirement was to use code instead of accessing multiple Groovy > compilers simultaneously from the command line. Since different versions > cannot coexist, I need to use classLoader to isolate them. -- This message was sent by Atlassian Jira (v8.20.10#820010)