Opened 3 years ago
Last modified 2 years ago
#22990 closed defect
jakarta.json.JsonException: Provider org.glassfish.json.JsonProviderImpl could not be instantiated: java.lang.ClassCastException: class org.glassfish.json.JsonProviderImpl cannot be cast to class jakarta.json.spi.JsonProvider (org.glassfish.json.JsonProviderImpl and jakarta.json.spi.JsonProvider are in unnamed module of loader 'app') — at Version 2
| Reported by: | sebastic | Owned by: | team |
|---|---|---|---|
| Priority: | normal | Milestone: | 23.07 |
| Component: | Core | Version: | tested |
| Keywords: | Cc: |
Description (last modified by )
The Debian package throws and exception at startup after the update to r18746:
Revision:18746
Is-Local-Build:false
Build-Date:2023-06-06 03:52:38
Debian-Release:0.0.svn18746+dfsg-1~exp1
Build-Name:Debian
Identification: JOSM/1.5 (18746 Debian en) Linux Debian GNU/Linux 12 (bookworm)
Memory Usage: 160 MB / 3918 MB (64 MB allocated, but free)
Java version: 17.0.6+10-Debian-1, Debian, OpenJDK 64-Bit Server VM
Look and Feel: javax.swing.plaf.metal.MetalLookAndFeel
Screen: :0.0 1920×1200 (scaling 1.00×1.00)
Maximum Screen Size: 1920×1200
Best cursor sizes: 16×16→16×16, 32×32→32×32
Environment variable LANG: en_US.UTF-8
System property file.encoding: UTF-8
System property sun.jnu.encoding: UTF-8
Locale info: en_US
Numbers with default locale: 1234567890 -> 1234567890
Desktop environment: KDE
Java package: openjdk-17-jre:amd64-17.0.6+10-1
Java ATK Wrapper package: libatk-wrapper-java:all-0.40.0-3
libcommons-compress-java: libcommons-compress-java:all-1.22-1
libcommons-logging-java: libcommons-logging-java:all-1.2-3
fonts-noto: fonts-noto:all-20201225-1
liboauth-signpost-java: liboauth-signpost-java:all-1.2.1.2-3
VM arguments: [--module-path=/usr/share/openjfx/lib, --add-modules=java.scripting,java.sql,javafx.controls,javafx.media,javafx.swing,javafx.web, -Djosm.restart=true, -Djava.net.useSystemProxies=true, --add-exports=java.<user.name>e/sun.security.action=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.plugins.jpeg=ALL-UNNAMED, --add-exports=java.desktop/com.sun.imageio.spi=ALL-UNNAMED]
Plugins:
+ AddrInterpolation
+ DirectUpload
+ FixAddresses
+ HouseNumberTaggingTool
+ OpeningHoursEditor
+ RoadSigns
+ SimplifyArea
+ apache-commons
+ buildings_tools
+ editgpx
+ ejml
+ geotools
+ jackson
+ jaxb (35952)
+ jts
+ opendata
+ pbf
+ poly
+ reverter
+ terracer
+ todo
+ turnlanes
+ turnrestrictions
+ utilsplugin2
+ waydownloader
+ wikipedia
Tagging presets:
+ /usr/share/josm/data/defaultpresets.xml
Map paint styles:
- /usr/share/josm/styles/standard/potlatch2.mapcss
- <josm.pref>/plugins/ods-bag/Ods-bag-style-0.6.8.mapcss
Last errors/warnings:
- 00016.150 E: Handled by bug report queue: jakarta.json.JsonException: Provider org.glassfish.json.JsonProviderImpl could not be instantiated: java.lang.ClassCastException: class org.glassfish.json.JsonProviderImpl cannot be cast to class jakarta.json.spi.JsonProvider (org.glassfish.json.JsonProviderImpl and jakarta.json.spi.JsonProvider are in unnamed module of loader 'app'). Cause: java.lang.ClassCastException: class org.glassfish.json.JsonProviderImpl cannot be cast to class jakarta.json.spi.JsonProvider (org.glassfish.json.JsonProviderImpl and jakarta.json.spi.JsonProvider are in unnamed module of loader 'app')
=== REPORTED CRASH DATA ===
BugReportExceptionHandler#handleException:
No data collected.
Warning issued by: BugReportExceptionHandler#handleException
=== STACK TRACE ===
Thread: main (1)
jakarta.json.JsonException: Provider org.glassfish.json.JsonProviderImpl could not be instantiated: java.lang.ClassCastException: class org.glassfish.json.JsonProviderImpl cannot be cast to class jakarta.json.spi.JsonProvider (org.glassfish.json.JsonProviderImpl and jakarta.json.spi.JsonProvider are in unnamed module of loader 'app')
at jakarta.json.spi.JsonProvider.provider(JsonProvider.java:89)
at jakarta.json.Json.createParser(Json.java:85)
at org.openstreetmap.josm.tools.Territories.initializeExternalData(Territories.java:196)
at org.openstreetmap.josm.tools.Territories.initializeExternalData(Territories.java:190)
at org.openstreetmap.josm.tools.Territories.initialize(Territories.java:124)
at org.openstreetmap.josm.gui.MainInitialization.lambda$beforeInitializationTasks$4(MainInitialization.java:85)
at org.openstreetmap.josm.spi.lifecycle.InitializationTask.call(InitializationTask.java:33)
at org.openstreetmap.josm.spi.lifecycle.Lifecycle.runInitializationTasks(Lifecycle.java:103)
at org.openstreetmap.josm.spi.lifecycle.Lifecycle.initialize(Lifecycle.java:71)
at org.openstreetmap.josm.gui.MainApplication.mainJOSM(MainApplication.java:959)
at org.openstreetmap.josm.gui.MainApplication$3.processArguments(MainApplication.java:277)
at org.openstreetmap.josm.gui.MainApplication.main(MainApplication.java:742)
Caused by: java.lang.ClassCastException: class org.glassfish.json.JsonProviderImpl cannot be cast to class jakarta.json.spi.JsonProvider (org.glassfish.json.JsonProviderImpl and jakarta.json.spi.JsonProvider are in unnamed module of loader 'app')
at jakarta.json.spi.JsonProvider.provider(JsonProvider.java:84)
... 11 more
Stack Overflow suggests this is be caused by javax.json being on the classpath along with jakarta.json. GeoJSONImporter.java needs to be updated before javax.json can be removed from the classpath:
$ grep javax.json src/org/openstreetmap/ -r src/org/openstreetmap/josm/gui/io/importexport/GeoJSONImporter.java:import javax.json.JsonException;
Patching this file to use jakarta.json.JsonException and removing the javax/json sources results in a build failure because org.glassfish.json also uses javax.json:
[...]
[javac] /build/josm-0.0.svn18746+dfsg/src/org/glassfish/json/JsonArrayBuilderImpl.java:63: error: cannot find symbol
[javac] class JsonArrayBuilderImpl implements JsonArrayBuilder {
[javac] ^
[javac] symbol: class JsonArrayBuilder
[...]
[javac] /build/josm-0.0.svn18746+dfsg/src/org/glassfish/json/JsonArrayBuilderImpl.java:45: error: package javax.json does not exist
[javac] import javax.json.*;
[javac] ^
[...]
[javac] /build/josm-0.0.svn18746+dfsg/src/org/glassfish/json/JsonBuilderFactoryImpl.java:46: error: package javax.json does not exist
[javac] import javax.json.JsonObject;
[javac] ^
[javac] /build/josm-0.0.svn18746+dfsg/src/org/glassfish/json/JsonBuilderFactoryImpl.java:47: error: package javax.json does not exist
[javac] import javax.json.JsonArray;
[javac] ^
[javac] /build/josm-0.0.svn18746+dfsg/src/org/glassfish/json/JsonBuilderFactoryImpl.java:48: error: package javax.json does not exist
[javac] import javax.json.JsonArrayBuilder;
[javac] ^
[javac] /build/josm-0.0.svn18746+dfsg/src/org/glassfish/json/JsonBuilderFactoryImpl.java:49: error: package javax.json does not exist
[javac] import javax.json.JsonBuilderFactory;
[javac] ^
[javac] /build/josm-0.0.svn18746+dfsg/src/org/glassfish/json/JsonBuilderFactoryImpl.java:50: error: package javax.json does not exist
[javac] import javax.json.JsonObjectBuilder;
[javac] ^
[...]
[javac] Note: /build/josm-0.0.svn18746+dfsg/src/oauth/signpost/AbstractOAuthProvider.java uses or overrides a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 100 errors
[javac] only showing the first 100 errors, of 1179 total; use -Xmaxerrs if you would like to see more
BUILD FAILED
/build/josm-0.0.svn18746+dfsg/build.xml:242: Compile failed; see the compiler error output for details.
at org.apache.tools.ant.taskdefs.Javac.compile(Javac.java:1373)
at org.apache.tools.ant.taskdefs.Javac.execute(Javac.java:1092)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299)
at jdk.internal.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
at org.apache.tools.ant.Task.perform(Task.java:350)
at org.apache.tools.ant.Target.execute(Target.java:449)
at org.apache.tools.ant.Target.performTasks(Target.java:470)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1401)
at org.apache.tools.ant.Project.executeTarget(Project.java:1374)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1264)
at org.apache.tools.ant.Main.runBuild(Main.java:818)
at org.apache.tools.ant.Main.startAnt(Main.java:223)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:284)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101)
Total time: 11 seconds
[...]
Reverting the changes from r18723 to use javax.json instead of jakarta.json resolves the exception at startup.
Change History (2)
comment:1 by , 3 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 3 years ago
| Description: | modified (diff) |
|---|


