Thursday, March 26, 2026

Re: no gwt or static content included in app

Still no js found.
they are generated but not exploded.

Le jeudi 26 mars 2026 à 15:27:34 UTC+1, Régis Millet a écrit :
when i tried a lot of things , i "lost" my gwt-user dependency.
building currently running

Le jeu. 26 mars 2026 à 15:09, Régis Millet <mille...@gmail.com> a écrit :
OK, my understanding of the goals was wrong.

but now that I only put compile, I get - gwt-maven-plugin:1.2.0:compile (default) @ module ---
[INFO] Loading inherited module 'fr.company.module.Module'
[INFO]    Loading inherited module 'com.google.gwt.core.Core'
[INFO]       [ERROR] Unable to find 'com/google/gwt/core/Core.gwt.xml' on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?

Le jeudi 26 mars 2026 à 15:01:38 UTC+1, Thomas Broyer a écrit :
On Thursday, March 26, 2026 at 2:54:35 PM UTC+1 mille...@gmail.com wrote:

                <executions>
                    <execution>
                        <goals>
                            <goal>generate-module</goal>
                            <goal>codeserver</goal>

                        </goals>
                    </execution>
                </executions>
            </plugin>

You don't GWT-compile your application, you need to call the "compile" goal here.

Also, it's weird and useless to have the codeserver goal here (weird because you wouldn't want to call it during a "standard" build, you want to explicitly invoke it from the command line, and useless because it doesn't bind to any lifecycle phase by default, so it won't be executed anyway without some more configuration)

--
You received this message because you are subscribed to a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/07aw4tsunPE/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-web-tool...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/77c94799-7c97-40c5-9bae-5e3aa43c8c83n%40googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/a9ec23ec-a370-43e6-a5ea-2913a46b1a6an%40googlegroups.com.

Re: no gwt or static content included in app

when i tried a lot of things , i "lost" my gwt-user dependency.
building currently running

Le jeu. 26 mars 2026 à 15:09, Régis Millet <milletregis@gmail.com> a écrit :
OK, my understanding of the goals was wrong.

but now that I only put compile, I get - gwt-maven-plugin:1.2.0:compile (default) @ module ---
[INFO] Loading inherited module 'fr.company.module.Module'
[INFO]    Loading inherited module 'com.google.gwt.core.Core'
[INFO]       [ERROR] Unable to find 'com/google/gwt/core/Core.gwt.xml' on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?

Le jeudi 26 mars 2026 à 15:01:38 UTC+1, Thomas Broyer a écrit :
On Thursday, March 26, 2026 at 2:54:35 PM UTC+1 mille...@gmail.com wrote:

                <executions>
                    <execution>
                        <goals>
                            <goal>generate-module</goal>
                            <goal>codeserver</goal>

                        </goals>
                    </execution>
                </executions>
            </plugin>

You don't GWT-compile your application, you need to call the "compile" goal here.

Also, it's weird and useless to have the codeserver goal here (weird because you wouldn't want to call it during a "standard" build, you want to explicitly invoke it from the command line, and useless because it doesn't bind to any lifecycle phase by default, so it won't be executed anyway without some more configuration)

--
You received this message because you are subscribed to a topic in the Google Groups "GWT Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/google-web-toolkit/07aw4tsunPE/unsubscribe.
To unsubscribe from this group and all its topics, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/77c94799-7c97-40c5-9bae-5e3aa43c8c83n%40googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/CAG75Oq1%3DtE8RZcC7CJR0VMGUsVvutBybUffOVhY7yT%2Bdhxjd%3DQ%40mail.gmail.com.

Re: GWT resilience to recursion

Seeing the stack trace would be helpful not for the method names, but for the pattern of methods in the stack - if it shows A B C A B C in TeaVM but A A A A in GWT, then we know that GWT is inlining away B and C, so you have a much smaller stack as a result. It might suggest some manual inlining that could get TeaVM performing the way you hope.

If you have a tail recursive function(s) and don't mind losing your stack trace, iteration can be cheaper in multiple ways. Many recursive algorithms also have a natural iterative variation, that may or may not require a Stack of some kind to track details. I wouldn't set a blanket rule on iteration vs recursion - I find recursion easier to write/read/debug, but iteration makes more sense when you know you'll be hundreds or thousands of frames deep when recursing. Finally, there are other ways to handle deeply recursive functions, such as deferring work with Promise, and awaiting results. 

Whatever approach you take, remember to measure twice, cut once.

On Thursday, March 26, 2026 at 7:29:29 AM UTC-5 tim_mac...@yahoo.co.uk wrote:
I'm only getting this during stress testing comparisions,
generating  up to 32k of hierachical data nodes under GWT,
whereas Teavm blows at 24k, that's  around 1000 calls in a recursive loop of around 5 functions.
Chrome can handle a lot more than that I think so the stack size error is due to stack memory not height ? 
a little GWT pruning of the stack seems to stop the overflow, it's pruning stack memory ?

The stack trace isn't much help, just mangled functions.

It's best practice to turn recursion into iteration for browser side code ?
GWT doesn't do that because it messes up stack traces.



On Thursday, 26 March 2026 at 07:05:37 GMT, 'RobW' via GWT Users <google-we...@googlegroups.com> wrote:


We've been using GWT for nearly 20 years now and never seen a single occurence of this. I definitely would treat anything AI says on the matter with extreme suspicion.
-R

On Wednesday, 25 March 2026 at 20:43:47 UTC Colin Alworth wrote:
Based on my knowledge of the compiler, it is straight up making this up, there's no reality to what it is saying, about inlining being possible for recursive calls, or rewriting to loops. Throwing the word "permutation" in doesn't really help matters, this really isn't specific to how GWT uses permutations at all (but it does sound important I guess). Its unfortunate too, as the logic here is pretty easy to follow and well commented, exactly the kind of thing I would imagine an LLM could take great advantage of.

Both the Java AST's MethodInliner and the JS AST's JsInliner explicitly omit self-recursive from being eligible for inlining, to prevent infinite expansion. In theory there are some specific cases where self-recursive calls could be inlined into themselves and improve matters (via something like "partial inlining" and "outlining"), but we don't do that today, and would only take that on very cautiously.

GWT never transforms recursive calls to iterative (though your IDE can likely do this for you in certain cases), that would mess up stack traces even more than we already do.

Mutually-recursive functions are allowed to be inlined into one another, but the compiler will detect if inlining A into B means that B now calls itself, and will forbid further inlining. Consider this code:
String many(int i) {
  if (i <= 0) {
    return "";
  }
  return "a" + more(i);
}
String more(int i) {
  return many(i - 1) + many(i - 1);
}

This is mutually recursive, since each function calls the other. The "many" function could be rewritten to make it easier to optimize, but it is far simpler to just inline away "more":
String many(int i) {
  if (i <= 0) {
    return "";
  }
  return "a" + many(i - 1) + many(i - 1);
}

This also cuts the stack down by half, since a deep call to many(100) calls more(100) calls many(99) calls more(99) calls many(98)... but now many(100) calls many(99) calls many(98)...

For simpler inlining, it might also be that you _almost_ blow the stack in GWT, but a little bit of inlining saves you, but TeaVM doesn't.

JS calling conventions matter here too - GWT's JsInterop means that Java varargs ends up being part of the JS stack instead of being a single array reference on the stack. I don't know how TeaVM handles those cases, but there are places in GWT where we are defensive about keeping that stack size under control.

Finally, it is possible that TeaVM has to add an extra call in the chain as part of how it emulates the JVM, but I'm not confident of that answer.

Can you share some details of the recursive function, and what the TeaVM stack looks like when it blows? A little information on what that ends up looking like should shed some light here quickly.

On Wednesday, March 25, 2026 at 2:56:29 PM UTC-5 tim_mac...@yahoo.co.uk wrote:
  • GWT's JavaScript Optimization: GWT's compiler is famously aggressive at inlining and "smashing" code. Depending on the complexity of your tree logic, GWT might have been able to flatten certain recursive calls into iterative loops during its permutation phase, effectively creating an implicit trampoline.
That's what AI says, I'm probably hoping in vain for a high-level "compiler nerd" discussion that the current GWT group just isn't primed for.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-tool...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/d16f0a1f-2394-4ca3-b1cd-9ff29a73585an%40googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/3cdcd56e-ef0d-4d00-88b0-84478ed4356an%40googlegroups.com.

Re: no gwt or static content included in app

OK, my understanding of the goals was wrong.

but now that I only put compile, I get - gwt-maven-plugin:1.2.0:compile (default) @ module ---
[INFO] Loading inherited module 'fr.company.module.Module'
[INFO]    Loading inherited module 'com.google.gwt.core.Core'
[INFO]       [ERROR] Unable to find 'com/google/gwt/core/Core.gwt.xml' on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?

Le jeudi 26 mars 2026 à 15:01:38 UTC+1, Thomas Broyer a écrit :
On Thursday, March 26, 2026 at 2:54:35 PM UTC+1 mille...@gmail.com wrote:

                <executions>
                    <execution>
                        <goals>
                            <goal>generate-module</goal>
                            <goal>codeserver</goal>

                        </goals>
                    </execution>
                </executions>
            </plugin>

You don't GWT-compile your application, you need to call the "compile" goal here.

Also, it's weird and useless to have the codeserver goal here (weird because you wouldn't want to call it during a "standard" build, you want to explicitly invoke it from the command line, and useless because it doesn't bind to any lifecycle phase by default, so it won't be executed anyway without some more configuration)

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/77c94799-7c97-40c5-9bae-5e3aa43c8c83n%40googlegroups.com.

Re: no gwt or static content included in app



On Thursday, March 26, 2026 at 2:54:35 PM UTC+1 mille...@gmail.com wrote:

                <executions>
                    <execution>
                        <goals>
                            <goal>generate-module</goal>
                            <goal>codeserver</goal>

                        </goals>
                    </execution>
                </executions>
            </plugin>

You don't GWT-compile your application, you need to call the "compile" goal here.

Also, it's weird and useless to have the codeserver goal here (weird because you wouldn't want to call it during a "standard" build, you want to explicitly invoke it from the command line, and useless because it doesn't bind to any lifecycle phase by default, so it won't be executed anyway without some more configuration)

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/c1b192f3-2ac5-446a-b497-f28939086084n%40googlegroups.com.

Re: HELP ! need to go from java 11 to 21.

project building and compiling, but not working because gwt statics not generated.
I made another threat with more details, since this one could be closed.

Le mercredi 25 mars 2026 à 17:32:56 UTC+1, Régis Millet a écrit :
yes, it is the path to the main class which implements EntryPoint
the name is the same, but it explains why it is in another package. just changed it.
I put back mojo plugin for i18n and ASync. Not fluent enough to write them everytime something changes and it helps going faster.

thanks a lot.

Le mercredi 25 mars 2026 à 15:58:30 UTC+1, Thomas Broyer a écrit :
On Wednesday, March 25, 2026 at 3:27:47 PM UTC+1 mille...@gmail.com wrote:

I see that the generated gwt.xml file is in the "client" subpackage (in previous version it was on folder upper) maybe it is a sign ?


Is "${path.to.entry.point}" in your pom.xml snippet in previous message the name of your entry-point class? It should be the name of the module as you would <inherits> it from (or in other words, the name of the file you want generated, with directory separators replaced with " dot, and with the ".gwt.xml" filename extension stripped)

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/193d1895-f7be-4100-86cb-5c63fdc47b58n%40googlegroups.com.

no gwt or static content included in app

Hello.
now that I managed to make the project build, I see that there is no static files generated and my application does not work because no js file
no static data (css, images..) are there
no file with gwt.rpc extension either

when using mojo, static files were generated and put in a projectName-version-statics.zip files
_______________________________________
my pom.xml for GWT module:


    <!-- POM file generated with GWT webAppCreator -->
    <modelVersion>4.0.0</modelVersion>
    <groupId>fr.company</groupId>
    <artifactId>projet</artifactId>
    <packaging>war</packaging>
    <version>3.4.0</version>
    <name>Project (GWT)</name>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.10</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>



    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>17</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <!-- Convenience property to set the GWT version -->
        <gwt.version>2.12.0</gwt.version>
        <gwt.maven.mojo.compile.version>2.10.0</gwt.maven.mojo.compile.version>
        <webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
        <!-- versions des dependances principales -->

        <mapstruct.version>1.6.3</mapstruct.version>





        <fileupload.version>1.6.0</fileupload.version>
        <itextpdf.version>5.5.13.5</itextpdf.version>
        <jfreechart.version>1.5.6</jfreechart.version>
        <poi.version>5.5.1</poi.version>
        <jsch.version>2.27.7</jsch.version>

        <maven.compiler.version>3.8.1</maven.compiler.version>

        <commons.io.version>2.14.0</commons.io.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.gwtproject</groupId>
                <artifactId>gwt</artifactId>
                <version>${gwt.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons.io.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>



    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>


        <dependency>
            <groupId>fr.company</groupId>
            <artifactId>projectCommons</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- google GWT dependencies -->
        <dependency>
            <groupId>org.gwtproject</groupId>
            <artifactId>gwt-dev</artifactId>
        </dependency>
        <dependency>
            <groupId>org.gwtproject</groupId>
            <artifactId>gwt-servlet-jakarta</artifactId>
        </dependency>

        <dependency>
        <groupId>net.ltgt.gwt.maven</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>1.2.0</version>
            <scope>compile</scope>
        </dependency>

              <!-- dependency for file upload -->

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>${fileupload.version}</version>
        </dependency>

        <dependency>
            <groupId>org.jfree</groupId>
            <artifactId>jfreechart</artifactId>
            <version>${jfreechart.version}</version>
        </dependency>

        <!-- pdf dependencies -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>${itextpdf.version}</version>
            <type>jar</type>
        </dependency>

        <!-- Apache poi for generate XLS -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>${poi.version}</version>
        </dependency>

        <dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
            <version>${mapstruct.version}</version>
        </dependency>

        <dependency>
            <groupId>com.github.mwiede</groupId>
            <artifactId>jsch</artifactId>
            <version>${jsch.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-fileupload2-jakarta</artifactId>
            <version>2.0.0-M1</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!-- Source: https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
            <version>6.2.0-M1</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

    <build>

        <!-- Generate compiled stuff in the folder used for developing mode -->
        <outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>


        <plugins>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <version>${gwt.maven.mojo.compile.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>i18n</goal>
                            <goal>generateAsync</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <hostedWebapp>${webappDirectory}</hostedWebapp>
                    <i18nMessagesBundle>fr.company.project.Messages</i18nMessagesBundle>
                </configuration>
            </plugin>


            <!-- GWT Maven Plugin -->
            <plugin>
                <groupId>net.ltgt.gwt.maven</groupId>
                <artifactId>gwt-maven-plugin</artifactId>
                <version>1.2.0</version>
                <extensions>true</extensions>
                <configuration>
                    <moduleName>fr.company.project.MyModule</moduleName>
                    <moduleShortName>module</moduleShortName>
                    <classpathScope>compile+runtime</classpathScope>
                    <webappDirectory>${webappDirectory}</webappDirectory>

                    <startupUrls>
                        <startupUrl>Module.html</startupUrl>
                    </startupUrls>


                </configuration>

                <executions>
                    <execution>
                        <goals>
                            <goal>generate-module</goal>
                            <goal>codeserver</goal>

                        </goals>
                    </execution>
                </executions>
            </plugin>


___________________________________________________________________
the navigator error on  http://localhost:8080/project/:
GET
http://localhost:8080/project/Module/Module.nocache.js
[HTTP/1.1 404  13ms]



--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/google-web-toolkit/228f0514-6735-4883-a4a6-3cbe64f7ec33n%40googlegroups.com.