Widgetset can't be compiled for com.vaadin:grid-renderers-collection-addon:2.7.0 and Vaadin 8.10.1

59 Views Asked by At

In our Vaadin 8.10.1 project we need to set up CheckboxRenderer in grid, that's why we have added:

    <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>grid-renderers-collection-addon</artifactId>
        <version>2.7.0</version>
    </dependency>

because it is compatible with Vaadin 8.10.1 according to the compatibility matrix: https://vaadin.com/directory/component/grid-renderers-collection-for-vaadin7

For the grid I coded:

Setter<Payment, Boolean> setter = new Setter<Payment, Boolean>() {
    @Override
    public void accept(Payment s, Boolean aBoolean) {

    }
};
CheckboxRenderer renderer = new CheckboxRenderer(setter);
paymentGrid.addColumn(Payment::getSelectedToMultiAction).setRenderer(renderer).setCaption("");

renderer.addClickListener(event -> {
    Payment toBeAdded = (Payment) event.getItem();
    if (toBeAdded.getSelectedToMultiAction()) {
        selectedPayments.add(toBeAdded);
    } else {
        selectedPayments.remove(toBeAdded);
    }
});

There was no way for the version 2.7.0 to initialize the CheckboxRenderer rather than passing a Setter object for it (I'm not sure that I'm initializing it correctly, as I haven't fount any example on using the Setter)

Widgetset set up is:

@SpringUI
@Theme("valo-ps")
@Widgetset("com.vaadin.v7.Vaadin7WidgetSet")
@StyleSheet({"https://fonts.googleapis.com/css?family=Roboto"})

and gwt-dev is 2.8.2

enter image description here

When I compile my code with

--- vaadin-maven-plugin:8.10.1:compile (default)

i see the output about several widgetsets:

[INFO] Widgetsets found from classpath:
[INFO]  org.vaadin.teemu.ratingstars.gwt.RatingStarsWidgetset in jar:file:D:/m2repository/org/vaadin/addons/ratingstars/2.1/ratingstars-2.1.jar!/
[INFO]  org.vaadin.sparklines.SparklinesWidgetset in jar:file:D:/m2repository/org/vaadin/addons/sparklines/7.0.2/sparklines-7.0.2.jar!/
[INFO]  com.vaadin.DefaultWidgetSet in jar:file:D:/m2repository/com/vaadin/vaadin-client/8.10.1/vaadin-client-8.10.1.jar!/
[INFO]  org.vaadin.grid.cellrenderers.RenderersCollectionWidgetSet in jar:file:D:/m2repository/com/vaadin/grid-renderers-collection-addon/2.7.0/grid-renderers-collection-addon-2.7.0.jar!/
[INFO] Addon styles found from classpath:
[INFO]  VAADIN/addons/app-layout/app-layout.scss in jar:file:D:/m2repository/com/github/appreciated/app-layout-addon/1.0.2/app-layout-addon-1.0.2.jar!/

and finally it fails with

[INFO] auto discovered modules [AppWidgetset]
[INFO] Compiling module AppWidgetset
[INFO] [ERROR] An internal compiler exception occurred
[INFO] com.google.gwt.dev.jjs.InternalCompilerException: Error constructing Java AST
[INFO]  at com.google.gwt.dev.jjs.impl.GwtAstBuilder.translateException(GwtAstBuilder.java:3997)
[INFO]  at com.google.gwt.dev.jjs.impl.GwtAstBuilder$AstVisitor.endVisit(GwtAstBuilder.java:2169)
[INFO]  at org.eclipse.jdt.internal.compiler.ast.TryStatement.traverse(TryStatement.java:1244)
[INFO]  at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:369)
[INFO]  at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1479)
[INFO]  at com.google.gwt.dev.jjs.impl.GwtAstBuilder.processImpl(GwtAstBuilder.java:3933)
[INFO]  at com.google.gwt.dev.jjs.impl.GwtAstBuilder.process(GwtAstBuilder.java:3971)
[INFO]  at com.google.gwt.dev.javac.CompilationStateBuilder$CompileMoreLater$UnitProcessorImpl.process(CompilationStateBuilder.java:129)
[INFO]  at com.google.gwt.dev.javac.JdtCompiler$CompilerImpl.process(JdtCompiler.java:336)
[INFO]  at org.eclipse.jdt.internal.compiler.Compiler.processCompiledUnits(Compiler.java:575)
[INFO]  at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:475)
[INFO]  at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:426)
[INFO]  at com.google.gwt.dev.javac.JdtCompiler.doCompile(JdtCompiler.java:1040)
[INFO]  at com.google.gwt.dev.javac.CompilationStateBuilder$CompileMoreLater.compile(CompilationStateBuilder.java:325)
[INFO]  at com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom(CompilationStateBuilder.java:548)
[INFO]  at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:479)
[INFO]  at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:465)
[INFO]  at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:423)
[INFO]  at com.google.gwt.dev.Precompile.precompile(Precompile.java:222)
[INFO]  at com.google.gwt.dev.Precompile.precompile(Precompile.java:202)
[INFO]  at com.google.gwt.dev.Precompile.precompile(Precompile.java:143)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:204)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:155)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:144)
[INFO]  at com.google.gwt.dev.Compiler$1.run(Compiler.java:118)
[INFO]  at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:55)
[INFO]  at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:50)
[INFO]  at com.google.gwt.dev.Compiler.main(Compiler.java:125)
[INFO] Caused by: java.lang.NoSuchFieldError: resources
[INFO]  at com.google.gwt.dev.jjs.impl.GwtAstBuilder$AstVisitor.endVisit(GwtAstBuilder.java:2144)
[INFO]  ... 26 more
[INFO]    [ERROR] at DateTimeService.java(87): try
[INFO]   {
[INFO]     return LocaleService.getMonthNames(locale)[month];
[INFO]   }
[INFO] catch (final LocaleNotLoadedException e)
[INFO]   {
[INFO]     getLogger().log(Level.SEVERE, "Error in getMonth", e);
[INFO]     return null;
[INFO]   }
[INFO]       org.eclipse.jdt.internal.compiler.ast.TryStatement

So, what could be the root cause of the problem and what could be the workaround?

PS> sometime with no explicit change in any configuratio, Im getting another error:

[INFO] --- vaadin-maven-plugin:8.10.1:compile (default) @ payment-web ---
[INFO] auto discovered modules [AppWidgetset]
[INFO] Compiling module AppWidgetset
[INFO] [ERROR] An internal compiler exception occurred
[INFO] com.google.gwt.dev.jjs.InternalCompilerException: Error constructing Java AST
[INFO]  at com.google.gwt.dev.jjs.impl.GwtAstBuilder.translateException(GwtAstBuilder.java:3997)
[INFO]  at com.google.gwt.dev.jjs.impl.GwtAstBuilder$AstVisitor.endVisit(GwtAstBuilder.java:2169)
[INFO]  at org.eclipse.jdt.internal.compiler.ast.TryStatement.traverse(TryStatement.java:1244)
[INFO]  at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:369)
[INFO]  at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1479)
[INFO]  at com.google.gwt.dev.jjs.impl.GwtAstBuilder.processImpl(GwtAstBuilder.java:3933)
[INFO]  at com.google.gwt.dev.jjs.impl.GwtAstBuilder.process(GwtAstBuilder.java:3971)
[INFO]  at com.google.gwt.dev.javac.CompilationStateBuilder$CompileMoreLater$UnitProcessorImpl.process(CompilationStateBuilder.java:129)
[INFO]  at com.google.gwt.dev.javac.JdtCompiler$CompilerImpl.process(JdtCompiler.java:336)
[INFO]  at org.eclipse.jdt.internal.compiler.Compiler.processCompiledUnits(Compiler.java:575)
[INFO]  at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:475)
[INFO]  at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:426)
[INFO]  at com.google.gwt.dev.javac.JdtCompiler.doCompile(JdtCompiler.java:1040)
[INFO]  at com.google.gwt.dev.javac.CompilationStateBuilder$CompileMoreLater.compile(CompilationStateBuilder.java:325)
[INFO]  at com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom(CompilationStateBuilder.java:548)
[INFO]  at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:479)
[INFO]  at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:465)
[INFO]  at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:423)
[INFO]  at com.google.gwt.dev.Precompile.precompile(Precompile.java:222)
[INFO]  at com.google.gwt.dev.Precompile.precompile(Precompile.java:202)
[INFO]  at com.google.gwt.dev.Precompile.precompile(Precompile.java:143)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:204)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:155)
[INFO]  at com.google.gwt.dev.Compiler.compile(Compiler.java:144)
[INFO]  at com.google.gwt.dev.Compiler$1.run(Compiler.java:118)
[INFO]  at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:55)
[INFO]  at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:50)
[INFO]  at com.google.gwt.dev.Compiler.main(Compiler.java:125)
[INFO] Caused by: java.lang.NoSuchFieldError: resources
[INFO]  at com.google.gwt.dev.jjs.impl.GwtAstBuilder$AstVisitor.endVisit(GwtAstBuilder.java:2144)
[INFO]  ... 26 more
[INFO]    [ERROR] at DecimalMinValidatorForString.java(35): try
[INFO]   {
[INFO]     bigValue = new BigDecimal(value);
[INFO]   }
[INFO] catch (NumberFormatException e)
[INFO]   {
[INFO]     return false;
[INFO]   }
[INFO]       org.eclipse.jdt.internal.compiler.ast.TryStatement
1

There are 1 best solutions below

0
Eljah On

There was ecj dependency, that came here with the jasperreports dependency like that:

enter image description here

so had to find what exactly was adding it and exclude from that dependency:

        <dependency>
            <groupId>com.openpayment</groupId>
            <artifactId>payment-impl</artifactId>
            <version>${project.version}</version>
            <exclusions>
<!--                <exclusion>-->
<!--                        <groupId>org.eclipse.jdt.core.compiler</groupId>-->
<!--                        <artifactId>ecj</artifactId>-->
<!--                </exclusion>-->
                <exclusion>
                    <groupId>org.eclipse.jdt</groupId>
                    <artifactId>ecj</artifactId>
                </exclusion>
            </exclusions>              
        </dependency>