Friday, January 10, 2025

Re: GWT Dev Conflict with Spring Boot 3.4 and Google GSON

thank you Colin, it helps a lot

I see, historically my codebase included gwt-dev instead of gwt-servlet. Now I'm replacing gwt-dev with gwt-servlet, seems to work OK

As for  @UnsafeNativeLong - the project has single code base for client and server so the class had to be reachable through the common build classpath. Anyway I can factor it out now as I don't need the gwt-dev anymore.

On Friday, January 10, 2025 at 2:14:09 AM UTC+1 Colin Alworth wrote:
Can you confirm that? XsrfTokenServiceServlet and Md5Utils are definitely in gwt-servlet.jar:

$ unzip -l ~/.m2/repository/org/gwtproject/gwt-servlet/2.12.1/gwt-servlet-2.12.1.jar| grep XsrfTokenServiceServlet
     2692  2024-11-11 08:46   com/google/gwt/user/server/rpc/XsrfTokenServiceServlet.class

$ unzip -l ~/.m2/repository/org/gwtproject/gwt-servlet/2.12.1/gwt-servlet-2.12.1.jar| grep Md5Utils
     1108  2024-11-11 08:45   com/google/gwt/util/tools/shared/Md5Utils$1.class
     1115  2024-11-11 08:45   com/google/gwt/util/tools/shared/Md5Utils.class

Neither gwt-user nor gwt-dev should be on your server classpath. If you're using GWT-RPC, only gwt-servlet (or gwt-servlet-jakarta) should be necessary.

Using @UnsafeNativeLong in shared code doesn't make sense to me, perhaps you can share what you're trying to do (though you said it was factored out, so maybe it doesn't actually apply here). My general expectation would be to see this only in client-only code.
On Thursday, January 9, 2025 at 7:04:46 PM UTC-6 tequil...@gmail.com wrote:
Hi Colin,

> That said... you should not have gwt-dev on the same classpath as your server.

Unfortunately in my case I could not avoid it.
I use com.google.gwt.user.server.rpc.XsrfTokenServiceServlet (from gwt-user) and it refers com.google.gwt.util.tools.shared.Md5Utils from gwt-dev (GWT 2.12.1)
So I have to keep gwt-dev in classpath
There's another class I need, com.google.gwt.core.client.UnsafeNativeLong also in gwt-dev, but it can be factored out so it's not that critical. It's just useless to do that while XsrfTokenServiceServlet  still needs gwt-dev

On Thursday, January 9, 2025 at 3:36:33 AM UTC+1 Colin Alworth wrote:
Update the GSON version as you're doing - Ahmad is in the process of making this change in GWT itself:

In the next GWT release, we'll default to using 2.11.0.

That said... you should not have gwt-dev on the same classpath as your server, and you should not remove gson from gwt-dev, or you may have compilation issues with sourcemaps.

The tweak you're making is totally acceptable to make to gwt-servlet (or gwt-servlet-jakarta) though - either exclude if you don't use the stack trace deobfuscator with sourcemaps, or just update to 2.11.0.

On Wednesday, January 8, 2025 at 8:28:39 PM UTC-6 ma...@craig-mitchell.com wrote:
When upgrading from Spring Boot 3.3 to 3.4, my app still compiles, but when I run it, crashes with:

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
[2025-01-09 12:36:47.028] - 13568 SEVERE [restartedMain] --- org.springframework.boot.SpringApplication: Application run failed
java.lang.NoClassDefFoundError: com/google/gson/Strictness

Others have reported the same issue, but with different causes:  https://github.com/spring-projects/spring-boot/issues/43442

When I look at who is using GSON, it's gwt-dev.jar:

[INFO] teamdrift:drift-team-client:gwt-app:1.0-SNAPSHOT
[INFO] +- org.gwtproject:gwt-dev:jar:2.12.1:compile
[INFO] |  +- com.google.code.gson:gson:jar:2.6.2:compile

I can fix it by adding the newer version to my server:
<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.11.0</version>
</dependency>

And optionally, to clean up so the old version, remove it from my client gwt-dev:
<dependency>
  <groupId>org.gwtproject</groupId>
  <artifactId>gwt-dev</artifactId>
  <exclusions>
    <exclusion>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
    </exclusion>
  </exclusions>
</dependency>

Is this the best fix?  Or is there something better?

Thanks.

--
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/aea3382f-22f7-4c54-b154-1f291a5b0151n%40googlegroups.com.

No comments:

Post a Comment