For the most part we have gotten ORM buildable with Java 9. Some "open
items":
1. 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.
2. 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(a)hibernate.org> wrote:
No worries, I understand.
On Wed, Jun 15, 2016 at 3:13 PM Sanne Grinovero <sanne(a)hibernate.org>
wrote:
> On 15 June 2016 at 19:29, Steve Ebersole <steve(a)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(a)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(a)hibernate.org>:
> >>
> >> > On 13 June 2016 at 07:34, Gunnar Morling <gunnar(a)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/fde388e9fd822abf877e...
> >> > ;)
> >> >
> >> > >
> >> > > 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/8a0eb0bfbc7610ea6...
> >> > >
> >> > >
> >> > > 2016-06-12 22:18 GMT+02:00 Sanne Grinovero
<sanne(a)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(a)hibernate.org>
> >> > >> wrote:
> >> > >> > On 11 June 2016 at 18:47, Sanne Grinovero
<sanne(a)hibernate.org>
> >> > wrote:
> >> > >> >> On 11 June 2016 at 18:25, Steve Ebersole
<steve(a)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/5e6a8ea754e3c4c59925fe7...
> >> > >> >
> >> > >> > 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(a)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(a)lists.jboss.org
> >> > >> >>>>
https://lists.jboss.org/mailman/listinfo/hibernate-dev
> >> > >> _______________________________________________
> >> > >> hibernate-dev mailing list
> >> > >> hibernate-dev(a)lists.jboss.org
> >> > >>
https://lists.jboss.org/mailman/listinfo/hibernate-dev
> >> > >
> >> > >
> >> >
> >> _______________________________________________
> >> hibernate-dev mailing list
> >> hibernate-dev(a)lists.jboss.org
> >>
https://lists.jboss.org/mailman/listinfo/hibernate-dev
>