Hi,

it's a known problem with 5.6.2+ and JSONObject that came to light recently.

An updated version of tapestry-json improvements were introduced with
5.7.0, but got backported to 5.6.2.

JSONObject is now a full-fledged Map<String, Object>, which lead to a
signature change being introduced. It slipped through into the backport,
resulting in the NoSuchMethodError for any dependency being compiled with <
5.6.2.

Due to the generic-nature of Map and Java's type erasure, the old methods
can't be retro-fitted in an update.

The are the possible workarounds I can think of:

- Update the dependency to a newer version using 5.6.2+.

- Shade the dependency and make the changes yourself

- Stay on 5.6.1 until the dependency is updated


I'm in the process of updating the documentation/release notes, so it's
clearer what the problem is.

Ben

On Tue, Apr 20, 2021 at 12:30 AM Wilson Velez <wilsonvelezvar...@gmail.com>
wrote:

> There is a weird behavior with the tags 5.6.2, 5.6.3. and 5.6.4, I don't
> know if this is expected.
>
> I'm having a problem trying to upgrade from 5.6.1. When I change the
> version to 5.6.2, 5.6.3. or 5.6.4
> the org.got5.tapestry5.jquery.utils.JQueryUtils#merge method throws the
> exception:
>
> java.lang.NoSuchMethodError
>
> org.apache.tapestry5.json.JSONObject.get(Ljava/lang/String;)Ljava/lang/Object;
>
> and clearly the method with that signature doesn't exist anymore, that's
> fine, I can understand that and probably I'm not going to be able to go
> beyond this point in the upgrade.
>
> However when I go to to
>
> https://github.com/apache/tapestry-5/blob/5.6.4/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java
> to see the new source code I see comments referencing the 5.7 version.
>
> Is that expected being in the 5.6.x?
>

Reply via email to