[hibernate-dev] Java 9: progress on compatibility

Sanne Grinovero sanne at hibernate.org
Wed Jun 15 16:13:08 EDT 2016


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