Modify

Opened 4 months ago

Closed 4 months ago

#15128 closed defect (fixed)

NoClassDefFoundError with java 9

Reported by: naoliv Owned by: Don-vip
Priority: normal Milestone:
Component: Plugin kendzi3d Version:
Keywords: java9 Cc:

Description

When testing JOSM with java 9:

2017-08-08 21:35:58.950 GRAVE: org.openstreetmap.josm.plugins.PluginException: Um erro ocorreu com o plugin kendzi3d. Causa: java.lang.reflect.InvocationTargetException. Causa: com.google.inject.internal.util.$ComputationException: com.google.inject.internal.util.$ComputationException: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException. Causa: com.google.inject.internal.util.$ComputationException: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException. Causa: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException. Causa: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
org.openstreetmap.josm.plugins.PluginException: Um erro ocorreu com o plugin kendzi3d
	at org.openstreetmap.josm.plugins.PluginInformation.load(PluginInformation.java:329)
	at org.openstreetmap.josm.plugins.PluginHandler.loadPlugin(PluginHandler.java:779)
	at org.openstreetmap.josm.plugins.PluginHandler.loadPlugins(PluginHandler.java:862)
	at org.openstreetmap.josm.plugins.PluginHandler.loadLatePlugins(PluginHandler.java:901)
	at org.openstreetmap.josm.gui.MainApplication.loadLatePlugins(MainApplication.java:435)
	at org.openstreetmap.josm.gui.MainApplication.main(MainApplication.java:362)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
	at org.openstreetmap.josm.plugins.PluginInformation.load(PluginInformation.java:326)
	... 5 more
Caused by: com.google.inject.internal.util.$ComputationException: com.google.inject.internal.util.$ComputationException: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
	at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:553)
	at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:419)
	at com.google.inject.internal.util.$CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
	at com.google.inject.internal.FailableCache.get(FailableCache.java:50)
	at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:49)
	at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:125)
	at com.google.inject.internal.InjectorImpl.initializeBinding(InjectorImpl.java:507)
	at com.google.inject.internal.AbstractBindingProcessor$Processor$1.run(AbstractBindingProcessor.java:159)
	at com.google.inject.internal.ProcessedBindingData.initializeBindings(ProcessedBindingData.java:44)
	at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:122)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106)
	at com.google.inject.Guice.createInjector(Guice.java:95)
	at com.google.inject.Guice.createInjector(Guice.java:72)
	at com.google.inject.Guice.createInjector(Guice.java:62)
	at kendzi.josm.kendzi3d.Kendzi3DPlugin.<init>(Kendzi3DPlugin.java:82)
	... 10 more
Caused by: com.google.inject.internal.util.$ComputationException: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
	at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:553)
	at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:419)
	at com.google.inject.internal.util.$CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
	at com.google.inject.internal.FailableCache.get(FailableCache.java:50)
	at com.google.inject.internal.MembersInjectorStore.get(MembersInjectorStore.java:65)
	at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:73)
	at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:28)
	at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:36)
	at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:32)
	at com.google.inject.internal.FailableCache$1.apply(FailableCache.java:39)
	at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:549)
	... 24 more
Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
	at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
	at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3139)
	at java.base/java.lang.Class.getDeclaredMethods(Class.java:2266)
	at com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:662)
	at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:356)
	at com.google.inject.internal.MembersInjectorStore.createWithListeners(MembersInjectorStore.java:90)
	at com.google.inject.internal.MembersInjectorStore.access$000(MembersInjectorStore.java:34)
	at com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:42)
	at com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:39)
	at com.google.inject.internal.FailableCache$1.apply(FailableCache.java:39)
	at com.google.inject.internal.util.$MapMaker$StrategyImpl.compute(MapMaker.java:549)
	... 34 more
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
	at org.openstreetmap.josm.plugins.PluginClassLoader.loadClass(PluginClassLoader.java:59)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
	... 45 more

JOSM:

Relative:URL: ^/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2017-08-06 22:38:35 +0200 (Sun, 06 Aug 2017)
Revision:12578
Build-Date:2017-08-07 01:32:55
URL:http://josm.openstreetmap.de/svn/trunk

Identification: JOSM/1.5 (12578 pt_BR) Linux Debian GNU/Linux unstable (sid)
Memory Usage: 261 MB / 3005 MB (145 MB allocated, but free)
Java version: 9-Debian+0-9b181-2, Oracle Corporation, OpenJDK 64-Bit Server VM
Screen: :0.0 1920x1080
Maximum Screen Size: 1920x1080
Java package: openjdk-9-jre:amd64-9~b181-2
Java ATK Wrapper package: libatk-wrapper-java:all-0.33.3-13
VM arguments: [-Dawt.useSystemAAFontSettings=on]

Plugins:
+ AddrInterpolation (33160)
+ Create_grid_of_ways (32699)
+ FastDraw (33182)
+ FixAddresses (33182)
+ ImportImagePlugin (33372)
+ OpeningHoursEditor (33185)
+ PicLayer (33385)
+ SimplifyArea (33004)
+ apache-commons (32994)
+ buildings_tools (33004)
+ download_along (32946)
+ editgpx (33004)
+ ejml (32680)
+ geojson (52)
+ geotools (33380)
+ graphview (33004)
+ jogl (1.1.0)
+ jts (32699)
+ kendzi3d
+ kendzi3d-resources (0.0.1)
+ log4j (32699)
+ measurement (33088)
+ merge-overlap (33436)
+ opendata (33438)
+ pdfimport (33004)
+ photo_geotagging (33088)
+ poly (33004)
+ reverter (33088)
+ tageditor (33021)
+ tagging-preset-tester (33004)
+ todo (30200)
+ turnlanes-tagging (254)
+ turnrestrictions (33088)
+ undelete (33480)

Attachments (0)

Change History (6)

comment:1 Changed 4 months ago by Don-vip

Owner: changed from kendzi to Don-vip
Status: newassigned

Actually it's up to JOSM core to deal with this issue.

comment:2 Changed 4 months ago by Don-vip

mmm not so easy: http://mail.openjdk.java.net/pipermail/jigsaw-dev/2017-April/012138.html

There's no "Add-Modules" manifest attribute, so we cannot add the missing JVM option (--add-modules java.se.ee) directly in the jar file.

The command line must be updated to add this parameter.

The plugin should still update Guice once Google supports Java 9, see https://github.com/google/guice/issues/1085

comment:3 Changed 4 months ago by Don-vip

In 12591/josm:

see #11924, see #15128 - add Java 9 option --add-modules java.se.ee for plugins requiring JAXB in Linux startup script

comment:4 Changed 4 months ago by Don-vip

@naoliv: can you please try r12591?

comment:5 Changed 4 months ago by naoliv

It's working!
Maybe it's good to add a note somewhere that people who directly runs java -jar josm-latest.jar will also need to use --add-modules java.se.ee?

The wiki (like "using the shell" in https://josm.openstreetmap.de/wiki/InstallNotes#LinuxBSD) and other docs will need to be updated too, I guess.

comment:6 Changed 4 months ago by Don-vip

Resolution: fixed
Status: assignedclosed

Before documenting it, I'd like to see if next release of Guice will be able to run without JAXB, so that the option would not be necessary.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Don-vip.
as The resolution will be set.
The resolution will be deleted.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.