[hibernate-dev] Java 9: progress on compatibility

Steve Ebersole steve at hibernate.org
Wed Jun 15 14:29:20 EDT 2016


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.

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