-
Notifications
You must be signed in to change notification settings - Fork 4.3k
Description
Gson version
v2.10.1 and v2.11.0, together in an OSGi runtime
Java / Android version
Java 21
Used tools
Eclipse IDE 2024-06 release, "Enterprise Java" package
Description
As described in eclipse-jdtls/eclipse.jdt.ls#3236 (comment)
I'm trying to load two versions of the same bundle, one which uses gson v2.10.1 and the other using gson v2.11.0.
In more detail, first, there is lsp4j v0.22.0 with
Import-Package: com.google.gson;version="[2.9.1,2.11)",com.google.gson.a nnotations;version="[2.9.1,2.11)",
(shown here as part of a bigger excerpt of the bundle MF):
Bundle-SymbolicName: org.eclipse.lsp4j
...
Export-Package: org.eclipse.lsp4j;uses:="com.google.gson.annotations,org
.eclipse.lsp4j.adapters,org.eclipse.lsp4j.jsonrpc.messages,org.eclipse.
lsp4j.jsonrpc.validation";version="0.22.0",org.eclipse.lsp4j.adapters;u
ses:="com.google.gson,com.google.gson.reflect,com.google.gson.stream,or
g.eclipse.lsp4j,org.eclipse.lsp4j.jsonrpc.messages";version="0.22.0",or
g.eclipse.lsp4j.launch;uses:="org.eclipse.lsp4j.jsonrpc,org.eclipse.lsp
4j.services";version="0.22.0",org.eclipse.lsp4j.services;uses:="org.ecl
ipse.lsp4j,org.eclipse.lsp4j.adapters,org.eclipse.lsp4j.jsonrpc.json,or
g.eclipse.lsp4j.jsonrpc.messages,org.eclipse.lsp4j.jsonrpc.services";ve
rsion="0.22.0",org.eclipse.lsp4j.util;uses:="org.eclipse.lsp4j";version
="0.22.0"
Import-Package: com.google.gson;version="[2.9.1,2.11)",com.google.gson.a
nnotations;version="[2.9.1,2.11)",com.google.gson.reflect;version="[2.9
.1,2.11)",com.google.gson.stream;version="[2.9.1,2.11)",java.io,java.la
ng,java.lang.invoke,java.lang.reflect,java.util,java.util.concurrent,ja
va.util.function,org.eclipse.lsp4j,org.eclipse.lsp4j.adapters,org.eclip
se.lsp4j.jsonrpc;version="[0.22,1)",org.eclipse.lsp4j.jsonrpc.json;vers
ion="[0.22,1)",org.eclipse.lsp4j.jsonrpc.json.adapters;version="[0.22,1
)",org.eclipse.lsp4j.jsonrpc.messages;version="[0.22,1)",org.eclipse.ls
p4j.jsonrpc.services;version="[0.22,1)",org.eclipse.lsp4j.jsonrpc.util;
version="[0.22,1)",org.eclipse.lsp4j.jsonrpc.validation;version="[0.22,
1)",org.eclipse.lsp4j.services
Next, there is lsp4j v0.23.1 with
Import-Package: com.google.gson;version="[2.9.1,3.0)",com.google.gson.an notations;version="[2.9.1,3.0)"
(Bigger bundle MF excerpt here:)
Export-Package: org.eclipse.lsp4j;uses:="com.google.gson.annotations,org
.eclipse.lsp4j.adapters,org.eclipse.lsp4j.jsonrpc.messages,org.eclipse.
lsp4j.jsonrpc.validation";version="0.23.1",org.eclipse.lsp4j.adapters;u
ses:="com.google.gson,com.google.gson.reflect,com.google.gson.stream,or
g.eclipse.lsp4j,org.eclipse.lsp4j.jsonrpc.messages";version="0.23.1",or
g.eclipse.lsp4j.launch;uses:="org.eclipse.lsp4j.jsonrpc,org.eclipse.lsp
4j.services";version="0.23.1",org.eclipse.lsp4j.services;uses:="org.ecl
ipse.lsp4j,org.eclipse.lsp4j.adapters,org.eclipse.lsp4j.jsonrpc.json,or
g.eclipse.lsp4j.jsonrpc.messages,org.eclipse.lsp4j.jsonrpc.services";ve
rsion="0.23.1",org.eclipse.lsp4j.util;uses:="org.eclipse.lsp4j";version
="0.23.1"
Import-Package: com.google.gson;version="[2.9.1,3.0)",com.google.gson.an
notations;version="[2.9.1,3.0)",com.google.gson.reflect;version="[2.9.1
,3.0)",com.google.gson.stream;version="[2.9.1,3.0)",java.io,java.lang,j
ava.lang.invoke,java.lang.reflect,java.util,java.util.concurrent,java.u
til.function,org.eclipse.lsp4j,org.eclipse.lsp4j.adapters,org.eclipse.l
sp4j.jsonrpc;version="[0.23,1)",org.eclipse.lsp4j.jsonrpc.json;version=
"[0.23,1)",org.eclipse.lsp4j.jsonrpc.json.adapters;version="[0.23,1)",o
rg.eclipse.lsp4j.jsonrpc.messages;version="[0.23,1)",org.eclipse.lsp4j.
jsonrpc.services;version="[0.23,1)",org.eclipse.lsp4j.jsonrpc.util;vers
ion="[0.23,1)",org.eclipse.lsp4j.jsonrpc.validation;version="[0.23,1)",
org.eclipse.lsp4j.services
Though I have gson v2.10.1 and 2.11.0 installed I can't resolve both versions of lsp4j. The OSGi console in Eclipse shows:
g! lb com.google.gson
15|Resolved | 4|Gson (2.11.0)|2.11.0
1011|Resolved | 4|Gson (2.10.1)|2.10.1
g! lb org.eclipse.lsp4j
621|Resolved | 4|org.eclipse.lsp4j (0.23.1.v20240521-1815)|0.23.1.v20240521-1815
1024|Installed | 4|org.eclipse.lsp4j (0.22.0.v20240213-2011)|0.22.0.v20240213-2011
g! diag 1024
org.eclipse.lsp4j [1024]
Unresolved requirement: Import-Package: com.google.gson.annotations; version="[2.9.1,2.11.0)"
As noted in this issue response, the problem seems likely related to the way in which the com.google.gson
imports com.google.gson.annotations without any qualifications on the version.
Reproduction steps
Besides the original recreate, a simpler method would be:
- Install 2024-06 Eclipse, using the Enterprise Java package (this has both the org.eclipse.tips.json v0.3.400 plugin using gson v2.11.0 and it also has the OSGi console, for convenience).
- Install https://download.eclipse.org/lsp4j/updates/releases/0.22.0
Help -> Install New Software then click Add button.
For Location field addhttps://download.eclipse.org/lsp4j/updates/releases/0.22.0
then click Add. - Check the "Lsp4j" check box, and complete the install, and restart.
- Open OSGi console:
Window->Show View->Console, select "Host OSGi Console" from drop-down - From console prompt type:
lb org.eclipse.lsp4j
You'll see something like:
621|Resolved | 4|org.eclipse.lsp4j (0.23.1.v20240521-1815)|0.23.1.v20240521-1815
...
1013|Installed | 4|org.eclipse.lsp4j (0.22.0.v20240213-2011)|0.22.0.v20240213-2011
- Type:
diag 1013
(or whatever bundle # you see in the prev. cmd):
You'll see something like:
org.eclipse.lsp4j [1013]
Unresolved requirement: Import-Package: com.google.gson.annotations; version="[2.9.1,2.11.0)"