[hibernate-dev] Java 9: progress on compatibility

Steve Ebersole steve at hibernate.org
Sun Jun 19 23:05:19 EDT 2016


Sounds good to me.  Thanks!

On Sun, Jun 19, 2016 at 6:10 PM Sanne Grinovero <sanne at hibernate.org> wrote:

> Hi Steve,
> on ci.hibernate.org either you are admin (with all powers) or you're a
> no-one, having only some read permissions. So I guess you merely
> forgot to login, or you wouldn't be able to change any other job
> either.
>
> Anyway, the JDK 9 build job is showing green!
>  - http://ci.hibernate.org/view/JDK9/job/hibernate-orm-master-h2-JDK9/
>
> I've re-enabled the email notifications: it will bother yourself,
> Andrea, and Chris in case of regressions (on top of notifying whoever
> broke it). Feel free to make any other change..
>
> A build will be triggered after each successful build of the "master
> job" (H2, JDK8, branch master) - only if that is successful, so you
> shouldn't get a pointless notifications about a failure which fails on
> JDK8 too. On the other hand, this means it will take a while to get
> you a JDK9 regression notification as it will need to have completed
> both the master build and the JDK9 build; I hope this is a good
> tradeoff for now, so that you don't get too many emails.
>
> Thanks,
> Sanne
>
>
>
> On 18 June 2016 at 17:37, Steve Ebersole <steve at hibernate.org> wrote:
> > Sanne I do not have rights to edit your ORM JDK 9 job.  I wanted to look
> at
> > the job config to make sure it is ok, but I cannot even see it.
> >
> > On Fri, Jun 17, 2016 at 7:22 PM Steve Ebersole <steve at hibernate.org>
> wrote:
> >>
> >> For the most part we have gotten ORM buildable with Java 9.  Some "open
> >> items":
> >>
> >> Javassist does not seem to support Java 9 much, if at all.  I had to
> >> disable some tests in hibernate-core that test enhancement as well as
> tests
> >> for hibernate-hikari since it uses Javassist extensively too.
> >> hibernate-envers has a bunch of test failures that seem related to
> Javassist
> >> as well.
> >> The tests for hibernate-osgi simply hang.  Something in that test stack
> >> does not like Java 9.
> >>
> >> Longer term we need to decide how we want to handle non standard modules
> >> moving forward.  This mostly came up in regards to JAXB and XJC.  For
> the
> >> moment I added a set of non-transitive dependencies for JAXB and XJC to
> >> hibernate-core and hibernate-jpamodelgen.  Since the hibernate-core one
> is
> >> non-transitive I then had to add a similar fragment to each and every
> module
> >> that depends on hibernate-core tries to run tests using it.  This gets
> fugly
> >> :)  For reference the fragment looks like:
> >>
> >> // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >>
> >> // Java 9 ftw!
> >> if ( JavaVersion.current().isJava9Compatible() ) {
> >>     // The JDK used to run Gradle is Java 9+, and we assume that that is
> >> the same
> >>     //    JDK for executing tasks
> >>     compile( 'com.sun.xml.bind:jaxb-impl:2.2.11' )
> >>     compile( 'org.glassfish.jaxb:jaxb-xjc:2.2.11' )
> >>     compile( 'org.jvnet.jaxb2_commons:jaxb2-basics:0.11.0' )
> >>     compile( 'org.jvnet.jaxb2_commons:jaxb2-basics-ant:0.11.0' )
> >>     compile( 'javax:javaee-api:7.0' )
> >>
> >>     testCompile( 'com.sun.xml.bind:jaxb-impl:2.2.11' )
> >>     testCompile( 'org.glassfish.jaxb:jaxb-xjc:2.2.11' )
> >>     testCompile( 'org.jvnet.jaxb2_commons:jaxb2-basics:0.11.0' )
> >>     testCompile( 'org.jvnet.jaxb2_commons:jaxb2-basics-ant:0.11.0' )
> >>     testCompile( 'javax:javaee-api:7.0' )
> >>
> >>     testRuntime( 'com.sun.xml.bind:jaxb-impl:2.2.11' )
> >>     testRuntime( 'org.glassfish.jaxb:jaxb-xjc:2.2.11' )
> >>     testRuntime( 'org.jvnet.jaxb2_commons:jaxb2-basics:0.11.0' )
> >>     testRuntime( 'org.jvnet.jaxb2_commons:jaxb2-basics-ant:0.11.0' )
> >>     testRuntime( 'javax:javaee-api:7.0' )
> >> }
> >> // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >>
> >>
> >> I decided to do this non-transitively since users may (probably) would
> >> want to use a better JAXB impl.  Not sure the best way to handle this.
> >>
> >> On Wed, Jun 15, 2016 at 3:14 PM Steve Ebersole <steve at hibernate.org>
> >> wrote:
> >>>
> >>> No worries, I understand.
> >>>
> >>> On Wed, Jun 15, 2016 at 3:13 PM Sanne Grinovero <sanne at hibernate.org>
> >>> wrote:
> >>>>
> >>>> On 15 June 2016 at 19:29, Steve Ebersole <steve at hibernate.org> wrote:
> >>>> > WRT JAXB (XJC) I am completely lost.
> >>>> >
> >>>> > Sanne I tried your solution of specifying an addmod for jaxb to
> >>>> > GRADLE_OPTS
> >>>> > but get the same result (ExceptionInInitializerError) with and
> without
> >>>> > that
> >>>> > change.  So not sure how you got that to work.
> >>>>
> >>>> Steve, sorry if that wasn't clear: this didn't work for me either.
> >>>> I used the GRADLE_OPTS to bypass other issues which I had before
> >>>> reaching this point, but then I got stuck on the 'xjc' plugin, and
> >>>> that's were I asked if we could bypass/skip/rewrite the plugin.
> >>>>
> >>>> >
> >>>> > I did try the alternative we discussed of defining an explicit build
> >>>> > dependency on JAXB (which again has no effect):
> >>>> >
> >>>> >
> >>>> > xjc 'org.glassfish.jaxb:jaxb-core:2.2.11'
> >>>> > xjc 'org.glassfish.jaxb:jaxb-xjc:2.2.11'
> >>>> > xjc 'org.jvnet.jaxb2_commons:jaxb2-basics:0.11.0'
> >>>> > xjc 'org.jvnet.jaxb2_commons:jaxb2-basics-ant:0.11.0'
> >>>> >
> >>>> >
> >>>> > For some background, XJC is currently performed via Gradle's
> >>>> > AntBuilder
> >>>> > support using the jaxb2_commons Ant task
> >>>> > (org.jvnet.jaxb2_commons.xjc.XJC2Task). I also have tried using
> Sun's
> >>>> > com.sun.tools.xjc.XJCTask directly.  Neither make any difference.
> The
> >>>> > fundamental problem is that for Ant execution Gradle simply reuses
> its
> >>>> > VM.
> >>>> > So to get this applied (iiuc) the only real option is to configure
> the
> >>>> > Gradle launch to include the addmod (which makes it more odd that
> >>>> > GRADLE_OPTS did not work for me).
> >>>> >
> >>>> > The other option is to write a new Gradle XjcTask that executes the
> >>>> > XJC tool
> >>>> > directly.  That we can use Gradle to help us fork and pass the
> addmod
> >>>> > option
> >>>> > to the forked process.  I think :)
> >>>> >
> >>>> >
> >>>> > On Mon, Jun 13, 2016 at 3:00 AM Gunnar Morling <
> gunnar at hibernate.org>
> >>>> > wrote:
> >>>> >>
> >>>> >> Yep, we discussed that approach last year already:
> >>>> >>
> http://lists.jboss.org/pipermail/hibernate-dev/2015-March/012250.html
> >>>> >>
> >>>> >> 2016-06-13 9:49 GMT+02:00 Sanne Grinovero <sanne at hibernate.org>:
> >>>> >>
> >>>> >> > On 13 June 2016 at 07:34, Gunnar Morling <gunnar at hibernate.org>
> >>>> >> > wrote:
> >>>> >> > > Hey,
> >>>> >> > >
> >>>> >> > > I hit the same issue with the injection plug-in in HV.
> >>>> >> > >
> >>>> >> > > It was used for obtaining the version of HV at runtime. I
> worked
> >>>> >> > > around
> >>>> >> > it
> >>>> >> > > by obtaining that from the package instead [1]:
> >>>> >> > >
> >>>> >> > >     return
> >>>> >> > > SomeHvClass.class.getPackage().getImplementationVersion();
> >>>> >> >
> >>>> >> > Right, that looks a lot like
> >>>> >> >  -
> >>>> >> >
> >>>> >> >
> >>>> >> >
> https://github.com/hibernate/hibernate-search/commit/fde388e9fd822abf877e56ab4147ac95c9fffd51
> >>>> >> > ;)
> >>>> >> >
> >>>> >> > >
> >>>> >> > > If that's all what the injection plug-in is used for in ORM as
> >>>> >> > > well
> >>>> >> > > (and
> >>>> >> > you
> >>>> >> > > don't depend on that version info e.g. during testing in the
> IDE,
> >>>> >> > > where
> >>>> >> > > there is no JAR manifest yet which is the source of the version
> >>>> >> > > with
> >>>> >> > > that
> >>>> >> > > approach), you could do the same there.
> >>>> >> > >
> >>>> >> > > --Gunnar
> >>>> >> > >
> >>>> >> > > [1]
> >>>> >> > >
> >>>> >> >
> >>>> >> >
> >>>> >> >
> https://github.com/hibernate/hibernate-validator/commit/8a0eb0bfbc7610ea6fc9962eef024a98c3f9468c#diff-963bab11ed76f80c4a804903ed66e03fR34
> >>>> >> > >
> >>>> >> > >
> >>>> >> > > 2016-06-12 22:18 GMT+02:00 Sanne Grinovero <
> sanne at hibernate.org>:
> >>>> >> > >>
> >>>> >> > >> Some more progress by simply setting this environment
> variable:
> >>>> >> > >>
> >>>> >> > >>
> >>>> >> >
> >>>> >> >
> >>>> >> >
> GRADLE_OPTS="-XaddExports:java.security.sasl/com.sun.security.sasl.digest=ALL-UNNAMED
> >>>> >> > >>
> >>>> >> > >>
> -XaddExports:java.security.sasl/com.sun.security.sasl=ALL-UNNAMED
> >>>> >> > >> -XaddExports:jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
> >>>> >> > >> -XaddExports:jdk.unsupported/sun.reflect=ALL-UNNAMED -addmods
> >>>> >> > >> java.xml.bind"
> >>>> >> > >>
> >>>> >> > >> But it's getting tricky:
> >>>> >> > >>
> >>>> >> > >> Caused by: compile error: javassist.NotFoundException:
> >>>> >> > >> java.lang.String
> >>>> >> > >>    at javassist.compiler.Javac.compileBody(Javac.java:229)
> >>>> >> > >>    at javassist.CtBehavior.setBody(CtBehavior.java:438)
> >>>> >> > >>    ... 76 more
> >>>> >> > >>
> >>>> >> > >> This seems to be caused by the following plugin, which I'm not
> >>>> >> > >> familiar
> >>>> >> > >> with:
> >>>> >> > >>  -
> >>>> >> > >>
> >>>> >> >
> >>>> >> >
> >>>> >> >
> org.hibernate.build.gradle.inject.InjectionAction.execute(InjectionAction.java:62)
> >>>> >> > >> Is this something which we could disable/skip/remove for now,
> or
> >>>> >> > >> update to not require Javassist?
> >>>> >> > >>
> >>>> >> > >> Thanks,
> >>>> >> > >> sanne
> >>>> >> > >>
> >>>> >> > >> On 12 June 2016 at 20:56, Sanne Grinovero <
> sanne at hibernate.org>
> >>>> >> > >> wrote:
> >>>> >> > >> > On 11 June 2016 at 18:47, Sanne Grinovero
> >>>> >> > >> > <sanne at hibernate.org>
> >>>> >> > wrote:
> >>>> >> > >> >> On 11 June 2016 at 18:25, Steve Ebersole
> >>>> >> > >> >> <steve at hibernate.org>
> >>>> >> > wrote:
> >>>> >> > >> >>> The ORM failure seems to be a Gradle/JDK9 issue.  Any idea
> >>>> >> > >> >>> about
> >>>> >> > that?
> >>>> >> > >> >>
> >>>> >> > >> >> Not sure, that's a new one :)
> >>>> >> > >> >> It could be related to
> >>>> >> > >> >> https://issues.gradle.org/browse/GRADLE-3287
> >>>> >> > ?
> >>>> >> > >> >>
> >>>> >> > >> >> Might be worth trying to upgrade to Gradle 2.12 .. I'm not
> at
> >>>> >> > >> >> a
> >>>> >> > >> >> terminal at the moment, I could try later.
> >>>> >> > >> >
> >>>> >> > >> > I've upgraded to Gradle 2.13, the pull request is here:
> >>>> >> > >> >  - https://github.com/hibernate/hibernate-orm/pull/1417#
> >>>> >> > >> >
> >>>> >> > >> > It solved that specific issue, but it's not enough. I'm
> still
> >>>> >> > >> > trying
> >>>> >> > >> > to hack a workaround for the next step, but in the meantime
> >>>> >> > >> > that PR
> >>>> >> > >> > could be considered independently.
> >>>> >> > >> >
> >>>> >> > >> > I could use some pointers with Gradle and the custom plugins
> >>>> >> > >> > we
> >>>> >> > >> > use;
> >>>> >> > >> > essentially we need to pass some additional JVM flags,
> >>>> >> > >> > including to
> >>>> >> > >> > javac, like here:
> >>>> >> > >> >  -
> >>>> >> > >> >
> >>>> >> >
> >>>> >> >
> >>>> >> >
> https://github.com/hibernate/hibernate-orm/commit/5e6a8ea754e3c4c59925fe7f824092490efc008b
> >>>> >> > >> >
> >>>> >> > >> > But the failure happens during:
> >>>> >> > >> >  Execution failed for task ':hibernate-core:xjc'
> >>>> >> > >> >
> >>>> >> > >> > and I'm not sure how to override the JVM flags for that
> plugin
> >>>> >> > >> > execution.
> >>>> >> > >> >
> >>>> >> > >> > Thanks,
> >>>> >> > >> > Sanne
> >>>> >> > >> >
> >>>> >> > >> >
> >>>> >> > >> >>
> >>>> >> > >> >>>
> >>>> >> > >> >>> On Fri, Jun 10, 2016, 4:39 PM Sanne Grinovero
> >>>> >> > >> >>> <sanne at hibernate.org>
> >>>> >> > >> >>> wrote:
> >>>> >> > >> >>>>
> >>>> >> > >> >>>> Hi all,
> >>>> >> > >> >>>> please try to have a look at this page when you have a
> >>>> >> > >> >>>> moment:
> >>>> >> > >> >>>>  - http://ci.hibernate.org/view/JDK9/
> >>>> >> > >> >>>>
> >>>> >> > >> >>>> Hibernate Search is working, and it shouldn't be too hard
> >>>> >> > >> >>>> to get
> >>>> >> > the
> >>>> >> > >> >>>> others "green" as well.
> >>>> >> > >> >>>>
> >>>> >> > >> >>>> I've disabled some integration tests to get there,
> notably:
> >>>> >> > >> >>>>  - OSGi tests: Karaf is not ready for it.
> >>>> >> > >> >>>>  - Documentation build: Asciidoc will probably need an
> >>>> >> > >> >>>> update.
> >>>> >> > >> >>>>  - WildFly integration tests: the WildFly team is aware,
> >>>> >> > >> >>>> will
> >>>> >> > >> >>>> need
> >>>> >> > a
> >>>> >> > >> >>>> minor upgrade.
> >>>> >> > >> >>>>
> >>>> >> > >> >>>> I don't believe these issues are relevant, so I'm
> satisfied
> >>>> >> > >> >>>> that
> >>>> >> > all
> >>>> >> > >> >>>> other tests working fine mean that the project will
> pretty
> >>>> >> > >> >>>> much
> >>>> >> > work
> >>>> >> > >> >>>> out of the box for end users - at worst their container
> >>>> >> > >> >>>> won't
> >>>> >> > >> >>>> work,
> >>>> >> > >> >>>> but that's not our responsibility to test for.
> >>>> >> > >> >>>>
> >>>> >> > >> >>>> Could you all contribute a bit to get all projects show
> >>>> >> > >> >>>> "green"
> >>>> >> > >> >>>> on
> >>>> >> > >> >>>> this
> >>>> >> > >> >>>> page?
> >>>> >> > >> >>>>
> >>>> >> > >> >>>> Some "workarounds" you might want to apply:
> >>>> >> > >> >>>>  - the Logger interfaces won't compile because of a known
> >>>> >> > >> >>>> issue,
> >>>> >> > this
> >>>> >> > >> >>>> can be worked around for now by having the compilation
> >>>> >> > >> >>>> phase
> >>>> >> > >> >>>> also
> >>>> >> > >> >>>> explicitly depend on this artifact:
> >>>> >> > >> >>>>
> >>>> >> > >> >>>>
> >>>> >> > >> >>>>
> >>>> >> >
> >>>> >> >
> >>>> >> >
> https://github.com/hibernate/hibernate-search/blob/master/pom.xml#L878-L883
> >>>> >> > >> >>>>  - you'll have a ClassNotFoundException on JAXB usage
> >>>> >> > >> >>>> unless you
> >>>> >> > set
> >>>> >> > >> >>>> this JVM flag:
> >>>> >> > >> >>>>
> >>>> >> > >> >>>>
> >>>> >> >
> >>>> >> >
> https://github.com/hibernate/hibernate-search/blob/master/pom.xml#L1429
> >>>> >> > >> >>>> (This one is not a bug but will be required to be set by
> >>>> >> > >> >>>> end
> >>>> >> > >> >>>> users
> >>>> >> > as
> >>>> >> > >> >>>> well - or we provide our own XML parser, that might be
> more
> >>>> >> > >> >>>> user
> >>>> >> > >> >>>> friendly).
> >>>> >> > >> >>>>
> >>>> >> > >> >>>> As far as I know, other issues with the build tools have
> >>>> >> > >> >>>> been
> >>>> >> > solved
> >>>> >> > >> >>>> already - including Gradle.
> >>>> >> > >> >>>>
> >>>> >> > >> >>>> Thanks,
> >>>> >> > >> >>>> Sanne
> >>>> >> > >> >>>> _______________________________________________
> >>>> >> > >> >>>> hibernate-dev mailing list
> >>>> >> > >> >>>> hibernate-dev at lists.jboss.org
> >>>> >> > >> >>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
> >>>> >> > >> _______________________________________________
> >>>> >> > >> hibernate-dev mailing list
> >>>> >> > >> hibernate-dev at lists.jboss.org
> >>>> >> > >> https://lists.jboss.org/mailman/listinfo/hibernate-dev
> >>>> >> > >
> >>>> >> > >
> >>>> >> >
> >>>> >> _______________________________________________
> >>>> >> hibernate-dev mailing list
> >>>> >> hibernate-dev at lists.jboss.org
> >>>> >> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>


More information about the hibernate-dev mailing list