svendiedrichsen/jollyday

Allow build on and usage with OpenJDK 11

krichter722 opened this issue · 8 comments

Building jollyday with OpenJDK 11 fails due to

[INFO] --- jaxb2-maven-plugin:2.4:xjc (generate) @ jollyday ---
[INFO] Created EpisodePath [/mnt/data/home/software/jollyday/target/generated-sources/jaxb/META-INF/JAXB]: true
[INFO] Ignored given or default xjbSources [/mnt/data/home/software/jollyday/src/main/xjb], since it is not an existent file or directory.
[INFO] Created EpisodePath [/mnt/data/home/software/jollyday/target/generated-sources/jaxb/META-INF/JAXB]: true
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.058 s
[INFO] Finished at: 2019-01-09T21:29:49+01:00
[INFO] ------------------------------------------------------------------------
---------------------------------------------------
constituent[0]: file:/usr/share/maven/conf/logging/
constituent[1]: file:/usr/share/maven/lib/aopalliance.jar
constituent[2]: file:/usr/share/maven/lib/cdi-api.jar
constituent[3]: file:/usr/share/maven/lib/commons-cli.jar
constituent[4]: file:/usr/share/maven/lib/commons-io.jar
constituent[5]: file:/usr/share/maven/lib/commons-lang3.jar
constituent[6]: file:/usr/share/maven/lib/guava.jar
constituent[7]: file:/usr/share/maven/lib/guice.jar
constituent[8]: file:/usr/share/maven/lib/jansi.jar
constituent[9]: file:/usr/share/maven/lib/javax.inject.jar
constituent[10]: file:/usr/share/maven/lib/jcl-over-slf4j.jar
constituent[11]: file:/usr/share/maven/lib/jsr250-api.jar
constituent[12]: file:/usr/share/maven/lib/maven-artifact-3.x.jar
constituent[13]: file:/usr/share/maven/lib/maven-builder-support-3.x.jar
constituent[14]: file:/usr/share/maven/lib/maven-compat-3.x.jar
constituent[15]: file:/usr/share/maven/lib/maven-core-3.x.jar
constituent[16]: file:/usr/share/maven/lib/maven-embedder-3.x.jar
constituent[17]: file:/usr/share/maven/lib/maven-model-3.x.jar
constituent[18]: file:/usr/share/maven/lib/maven-model-builder-3.x.jar
constituent[19]: file:/usr/share/maven/lib/maven-plugin-api-3.x.jar
constituent[20]: file:/usr/share/maven/lib/maven-repository-metadata-3.x.jar
constituent[21]: file:/usr/share/maven/lib/maven-resolver-api.jar
constituent[22]: file:/usr/share/maven/lib/maven-resolver-connector-basic.jar
constituent[23]: file:/usr/share/maven/lib/maven-resolver-impl.jar
constituent[24]: file:/usr/share/maven/lib/maven-resolver-provider-3.x.jar
constituent[25]: file:/usr/share/maven/lib/maven-resolver-spi.jar
constituent[26]: file:/usr/share/maven/lib/maven-resolver-transport-wagon.jar
constituent[27]: file:/usr/share/maven/lib/maven-resolver-util.jar
constituent[28]: file:/usr/share/maven/lib/maven-settings-3.x.jar
constituent[29]: file:/usr/share/maven/lib/maven-settings-builder-3.x.jar
constituent[30]: file:/usr/share/maven/lib/maven-shared-utils.jar
constituent[31]: file:/usr/share/maven/lib/maven-slf4j-provider-3.x.jar
constituent[32]: file:/usr/share/maven/lib/plexus-cipher.jar
constituent[33]: file:/usr/share/maven/lib/plexus-component-annotations.jar
constituent[34]: file:/usr/share/maven/lib/plexus-interpolation.jar
constituent[35]: file:/usr/share/maven/lib/plexus-sec-dispatcher.jar
constituent[36]: file:/usr/share/maven/lib/plexus-utils.jar
constituent[37]: file:/usr/share/maven/lib/sisu-inject.jar
constituent[38]: file:/usr/share/maven/lib/sisu-plexus.jar
constituent[39]: file:/usr/share/maven/lib/slf4j-api.jar
constituent[40]: file:/usr/share/maven/lib/wagon-file.jar
constituent[41]: file:/usr/share/maven/lib/wagon-http-shaded.jar
constituent[42]: file:/usr/share/maven/lib/wagon-provider-api.jar
---------------------------------------------------
Exception in thread "main" java.lang.Error: java.lang.reflect.InvocationTargetException
	at com.sun.tools.xjc.reader.Ring.get(Ring.java:113)
	at com.sun.tools.xjc.reader.xmlschema.BGMBuilder.<init>(BGMBuilder.java:147)
	at com.sun.tools.xjc.reader.xmlschema.BGMBuilder.build(BGMBuilder.java:117)
	at com.sun.tools.xjc.ModelLoader.annotateXMLSchema(ModelLoader.java:407)
	at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:162)
	at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:117)
	at com.sun.tools.xjc.Driver.run(Driver.java:354)
	at org.codehaus.mojo.jaxb2.javageneration.AbstractJavaGeneratorMojo.performExecution(AbstractJavaGeneratorMojo.java:468)
	at org.codehaus.mojo.jaxb2.AbstractJaxbMojo.execute(AbstractJaxbMojo.java:315)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:954)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:192)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
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:490)
	at com.sun.tools.xjc.reader.Ring.get(Ring.java:102)
	... 30 more
Caused by: java.lang.Error: java.lang.reflect.InvocationTargetException
	at com.sun.tools.xjc.reader.Ring.get(Ring.java:113)
	at com.sun.tools.xjc.reader.xmlschema.BindingComponent.getClassSelector(BindingComponent.java:65)
	at com.sun.tools.xjc.reader.xmlschema.ColorBinder.<init>(ColorBinder.java:62)
	at com.sun.tools.xjc.reader.xmlschema.BindGreen.<init>(BindGreen.java:63)
	... 35 more
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:490)
	at com.sun.tools.xjc.reader.Ring.get(Ring.java:102)
	... 38 more
Caused by: java.lang.NoClassDefFoundError: javax/activation/MimeTypeParseException
	at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3138)
	at java.base/java.lang.Class.getConstructor0(Class.java:3343)
	at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2554)
	at com.sun.tools.xjc.reader.Ring.get(Ring.java:100)
	at com.sun.tools.xjc.reader.xmlschema.DefaultClassBinder.<init>(DefaultClassBinder.java:98)
	at com.sun.tools.xjc.reader.xmlschema.ClassSelector.<init>(ClassSelector.java:214)
	... 43 more
Caused by: java.lang.ClassNotFoundException: javax.activation.MimeTypeParseException
	at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
	at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
	... 50 more

experienced with v_0_5_7-12-ge359ee2

I have created a branch and will make this lib be buildable with Java 11. I'm not quite sure how to provide a release compatible with Java 11 without breaking Java 8 compatibility though.

@krichter722 I have adapted the project to be buildable with java 8 and 11. Do you have any suggestion on how to have a single release being usable with both java versions?

Thanks. There're different stages of Java 8 to 11 migration/coexistence (note the difference between source and target):

  • Use Java 8: you can't run Java programs and libraries which are compiled with binary target 11. If you need to be able to run with Java 8 you need to enforce Java 8 source and target during compilation which is possible with JDK 11.
  • Use Java 11 to run: Java 11 runs both Java programs and libraries which are compiled for Java 8 and 11
  • Use Java 11 to build (with Java 8 source): Your program itself or some libraries used for building (including testing) may not run on Java 11 due to runtime crashes (like jollyday until now :))
  • Use Java 11 source features: I'm not sure whether you can compile the software to be runnable with Java 8 (it sound odd, but it might be possible; it's unlike, though)

The simplest case If you want to be able to run with Java 8 and 11, just don't use Java 11 source features (enforce source through the compiler).

After some trial and error I found out that when building with JDK 11 you cannot build with source 1.8 if module-info.java is used. Additionally if you build with source 11 you must use target 11.

module-info.java has been introduced in Java > 8, so the 4th point of my explanation applies.

Hi @krichter722 @svendiedrichsen

We do have any update reading to this. I have been facing the same issue. While migrating from OpenJDK 8 to OpenJDK 11.

You can use our jollyday version, that is a fork and compatible with the api, see https://github.com/focus-shift/jollyday

@derTobsch
Still, We are getting same error after using https://github.com/focus-shift/jollyday

constituent[0]: file:/C:/Program%20Files/apache-maven-3.8.6/conf/logging/
constituent[1]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/commons-cli-1.4.jar
constituent[2]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/commons-io-2.6.jar
constituent[3]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/commons-lang3-3.8.1.jar
constituent[4]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/guava-25.1-android.jar
constituent[5]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/guice-4.2.2-no_aop.jar
constituent[6]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/jansi-2.4.0.jar
constituent[7]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/javax.annotation-api-1.2.jar
constituent[8]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/javax.inject-1.jar
constituent[9]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/jcl-over-slf4j-1.7.36.jar
constituent[10]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-artifact-3.8.6.jar
constituent[11]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-builder-support-3.8.6.jar
constituent[12]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-compat-3.8.6.jar
constituent[13]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-core-3.8.6.jar
constituent[14]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-embedder-3.8.6.jar
constituent[15]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-model-3.8.6.jar
constituent[16]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-model-builder-3.8.6.jar
constituent[17]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-plugin-api-3.8.6.jar
constituent[18]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-repository-metadata-3.8.6.jar
constituent[19]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-resolver-api-1.6.3.jar
constituent[20]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-resolver-connector-basic-1.6.3.jar
constituent[21]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-resolver-impl-1.6.3.jar
constituent[22]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-resolver-provider-3.8.6.jar
constituent[23]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-resolver-spi-1.6.3.jar
constituent[24]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-resolver-transport-wagon-1.6.3.jar
constituent[25]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-resolver-util-1.6.3.jar
constituent[26]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-settings-3.8.6.jar
constituent[27]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-settings-builder-3.8.6.jar
constituent[28]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-shared-utils-3.3.4.jar
constituent[29]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/maven-slf4j-provider-3.8.6.jar
constituent[30]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/org.eclipse.sisu.inject-0.3.5.jar
constituent[31]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/org.eclipse.sisu.plexus-0.3.5.jar
constituent[32]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/plexus-cipher-2.0.jar
constituent[33]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/plexus-component-annotations-2.1.0.jar
constituent[34]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/plexus-interpolation-1.26.jar
constituent[35]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/plexus-sec-dispatcher-2.0.jar
constituent[36]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/plexus-utils-3.3.1.jar
constituent[37]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/slf4j-api-1.7.36.jar
constituent[38]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/wagon-file-3.5.1.jar
constituent[39]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/wagon-http-3.5.1-shaded.jar
constituent[40]: file:/C:/Program%20Files/apache-maven-3.8.6/lib/wagon-provider-api-3.5.1.jar

Exception in thread "main" java.lang.Error: java.lang.reflect.InvocationTargetException
at com.sun.tools.xjc.reader.Ring.get(Ring.java:113)
at com.sun.tools.xjc.reader.xmlschema.BGMBuilder.(BGMBuilder.java:146)
at com.sun.tools.xjc.reader.xmlschema.BGMBuilder.build(BGMBuilder.java:116)
at com.sun.tools.xjc.ModelLoader.annotateXMLSchema(ModelLoader.java:426)
at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:175)
at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:120)
at org.jvnet.mjiip.v_2_2.XJC22Mojo.loadModel(XJC22Mojo.java:49)
at org.jvnet.mjiip.v_2_2.XJC22Mojo.doExecute(XJC22Mojo.java:39)
at org.jvnet.mjiip.v_2_2.XJC22Mojo.doExecute(XJC22Mojo.java:26)
at org.jvnet.jaxb2.maven2.RawXJC2Mojo.doExecute(RawXJC2Mojo.java:309)
at org.jvnet.jaxb2.maven2.RawXJC2Mojo.execute(RawXJC2Mojo.java:153)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:370)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:294)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:960)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
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:490)
at com.sun.tools.xjc.reader.Ring.get(Ring.java:102)
... 34 more
Caused by: java.lang.Error: java.lang.reflect.InvocationTargetException
at com.sun.tools.xjc.reader.Ring.get(Ring.java:113)
at com.sun.tools.xjc.reader.xmlschema.BindingComponent.getClassSelector(BindingComponent.java:65)
at com.sun.tools.xjc.reader.xmlschema.ColorBinder.(ColorBinder.java:62)
at com.sun.tools.xjc.reader.xmlschema.BindGreen.(BindGreen.java:63)
... 39 more
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:490)
at com.sun.tools.xjc.reader.Ring.get(Ring.java:102)
... 42 more
Caused by: java.lang.NoClassDefFoundError: javax/activation/MimeTypeParseException
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3138)
at java.base/java.lang.Class.getConstructor0(Class.java:3343)
at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2554)
at com.sun.tools.xjc.reader.Ring.get(Ring.java:100)
at com.sun.tools.xjc.reader.xmlschema.DefaultClassBinder.(DefaultClassBinder.java:98)
at com.sun.tools.xjc.reader.xmlschema.ClassSelector.(ClassSelector.java:214)
... 47 more
Caused by: java.lang.ClassNotFoundException: javax.activation.MimeTypeParseException
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
... 54 more