Bug#912221: jabref: incompatible with openjdk 11

2018-11-06 Thread Emmanuel Bourg
Hi Tony,

Le 06/11/2018 à 21:12, tony mancill a écrit :

> XJC="java -cp 
> /usr/share/java/xml-resolver.jar:/usr/share/java/jaxb-api.jar:/usr/share/java/jaxb-core.jar:/usr/share/java/jaxb-impl.jar:/usr/share/java/jaxb-jxc.jar:/usr/share/java/jaxb-xjc.jar
>  -jar /usr/share/java/jaxb-xjc.jar"
> 
> And it dies with this exception stack, despite the xml-resolver being on
> the classpath:

The -cp parameter doesn't work with -jar, that's why you keep getting
the ClassNotFoundException. Either all the jar files are specified
behind -cp and the main class is specified on the command line (i.e.
com.sun.tools.xjc.XJCFacade for xjc), or the jar executed has a proper
Class-Path attribute in its manifest (and indeed xml-resolver.jar isn't
listed in jaxb-xjc.jar).


> Can you help me understand why this patch
> (https://salsa.debian.org/java-team/jaxb/blob/master/debian/patches/04-xml-resolver-compatibility.patch)
> was necessary?  Perhaps it's related to the failure I'm seeing?

I don't think it's related. We simply use a different version of
xml-resolver. There is this rule in debian/maven.rules:

s/com.sun.org.apache.xml.internal/xml-resolver/ s/resolver/xml-resolver/

Sun/Oracle had to change the namespace of the libraries they embedded in
the JDK to avoid conflicts. But now that JAXB is no longer in the JDK
it's not needed, and we can directly use the original library instead.


> I've also started looking at updating jaxb 2.3.1, but it will 
> take me a bit of time.

I've also started digging into jaxb to address the compatibility with
Java 11. I've considered upgrading to the version 2.3.1 but it didn't
look that straightforward despite the minor version increment. I'm not
sure the upgrade is still compatible with Java 8 for example. So I think
I'll rather aim at a minor update simply adding the dependency on
libactivation-java, and later look at an upgrade.

Emmanuel Bourg



Bug#912221: jabref: incompatible with openjdk 11

2018-11-06 Thread tony mancill
On Thu, Nov 01, 2018 at 02:22:26PM +0100, Emmanuel Bourg wrote:
> On 01/11/2018 01:54, tony mancill wrote:
> 
> > I am definitely open to (and appreciative of) your suggestions.
> 
> Hi Tony, even if the jaxb package doesn't yet provide the xjc executable
> (#905357), you can invoke it with:
> 
> java -jar /usr/share/java/jaxb-xjc.jar

Hi Emmanuel,

It doesn't seem to be quite that straight-forward.  I've spend a fair
amount of time trying to build up proper classpath, but actually trying
to use XJC to compile anything fails with classloader exceptions.  For
example, I build up a command like the following:

XJC="java -cp 
/usr/share/java/xml-resolver.jar:/usr/share/java/jaxb-api.jar:/usr/share/java/jaxb-core.jar:/usr/share/java/jaxb-impl.jar:/usr/share/java/jaxb-jxc.jar:/usr/share/java/jaxb-xjc.jar
 -jar /usr/share/java/jaxb-xjc.jar"

And it dies with this exception stack, despite the xml-resolver being on
the classpath:

> parsing a schema...
> Exception in thread "main" java.lang.AssertionError: 
> javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found 
> on module path or classpath.
>  - with linked exception:
> [java.lang.ClassNotFoundException: 
> com.sun.xml.internal.bind.v2.ContextFactory]
>   at 
> com.sun.tools.xjc.reader.xmlschema.bindinfo.BindInfo.getCustomizationContext(BindInfo.java:356)
>   at 
> com.sun.tools.xjc.reader.xmlschema.bindinfo.BindInfo.getCustomizationUnmarshaller(BindInfo.java:362)
>   at 
> com.sun.tools.xjc.reader.xmlschema.bindinfo.AnnotationParserFactoryImpl$1.(AnnotationParserFactoryImpl.java:85)
>   at 
> com.sun.tools.xjc.reader.xmlschema.bindinfo.AnnotationParserFactoryImpl.create(AnnotationParserFactoryImpl.java:84)
>   at 
> com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.createAnnotationParser(NGCCRuntimeEx.java:401)
>   at 
> com.sun.xml.xsom.impl.parser.state.annotation.action0(annotation.java:89)
>   at 
> com.sun.xml.xsom.impl.parser.state.annotation.enterElement(annotation.java:114)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:422)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCHandler.spawnChildFromEnterElement(NGCCHandler.java:114)
>   at 
> com.sun.xml.xsom.impl.parser.state.Schema.enterElement(Schema.java:317)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:422)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCHandler.revertToParentFromEnterElement(NGCCHandler.java:151)
>   at 
> com.sun.xml.xsom.impl.parser.state.foreignAttributes.enterElement(foreignAttributes.java:91)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:422)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCHandler.spawnChildFromEnterElement(NGCCHandler.java:114)
>   at 
> com.sun.xml.xsom.impl.parser.state.Schema.enterElement(Schema.java:229)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:422)
>   at 
> com.sun.xml.xsom.impl.parser.state.Schema.enterElement(Schema.java:273)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:422)
>   at 
> com.sun.xml.xsom.impl.parser.state.Schema.enterElement(Schema.java:309)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:422)
>   at 
> com.sun.xml.xsom.impl.parser.state.Schema.enterElement(Schema.java:293)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:422)
>   at 
> com.sun.xml.xsom.impl.parser.state.Schema.enterElement(Schema.java:221)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCRuntime.sendEnterElement(NGCCRuntime.java:422)
>   at 
> com.sun.xml.xsom.impl.parser.state.Schema.enterElement(Schema.java:257)
>   at 
> com.sun.xml.xsom.impl.parser.state.NGCCRuntime.startElement(NGCCRuntime.java:263)
>   at 
> java.xml/org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:551)
>   at 
> com.sun.tools.xjc.util.SubtreeCutter.startElement(SubtreeCutter.java:108)
>   at 
> com.sun.tools.xjc.reader.ExtensionBindingChecker.startElement(ExtensionBindingChecker.java:150)
>   at 
> java.xml/org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:551)
>   at 
> com.sun.tools.xjc.reader.xmlschema.parser.IncorrectNamespaceURIChecker.startElement(IncorrectNamespaceURIChecker.java:128)
>   at 
> java.xml/org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:551)
>   at 
> com.sun.tools.xjc.reader.xmlschema.parser.CustomizationContextChecker.startElement(CustomizationContextChecker.java:193)
>   at 
> java.xml/org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:551)
>   at 
> com.sun.tools.xjc.ModelLoader$SpeculationChecker.startElement(ModelLoader.java:455)
>   at 
> java.xml/org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:551)
>   at 

Bug#912221: jabref: incompatible with openjdk 11

2018-11-01 Thread Emmanuel Bourg
On 01/11/2018 01:54, tony mancill wrote:

> I am definitely open to (and appreciative of) your suggestions.

Hi Tony, even if the jaxb package doesn't yet provide the xjc executable
(#905357), you can invoke it with:

java -jar /usr/share/java/jaxb-xjc.jar

Emmanuel Bourg



Bug#912221: jabref: incompatible with openjdk 11

2018-10-31 Thread tony mancill
On Tue, Oct 30, 2018 at 12:31:29PM +0100, Markus Koschany wrote:
> Am 30.10.18 um 01:15 schrieb Emmanuel Bourg:
> > Le 30/10/2018 à 00:41, gregor herrmann a écrit :
> > 
> >> I guess we need to make sure that we build with openjdk-8.
> >> (You know this better than me but I seem to remember that the plan
> >> was to keep openjdk-8 in buster for building packages?)
> > 
> > No please don't built with openjdk-8 if there is a workaround with
> > openjdk-11. Building with openjdk-8 is really a last resort solution,
> > and very few cases justify its use (see lombok for a good example).
> 
> If it is too complicated, too intrusive or takes too much of your time
> away I find it OK to build-depend on openjdk-8. Just ensure that
> upstream knows about this issue because in the next cycle OpenJDK 8 will
> be definitely removed. It is more important that jabref works with
> OpenJDK 11 at runtime.

Hi Markus, hi Emmanuel - 

Thank you both for contributing to this thread.  For the time-being, the
package will build-depend on openjdk-8 to leverage xjc until we have a
suitable recipe for gradle-based builds.  So far, the only plugins I've
found are either wrappers for the xjc command-line tools or the ant
task. I'm hoping there is something out there that we can use in
conjunction with the maven-jaxb2-plugin, but haven't found anything yet.

Note that Debian's gradle in unstable won't run against openjdk-8, so
right now jabref depends on both default-jdk AND openjdk-8.  The build 
is with default-jdk and openjdk-8 is only for the xjc binary.

I am definitely open to (and appreciative of) your suggestions.

Cheers,
tony


signature.asc
Description: PGP signature


Bug#912221: jabref: incompatible with openjdk 11

2018-10-30 Thread Markus Koschany
Am 30.10.18 um 01:15 schrieb Emmanuel Bourg:
> Le 30/10/2018 à 00:41, gregor herrmann a écrit :
> 
>> I guess we need to make sure that we build with openjdk-8.
>> (You know this better than me but I seem to remember that the plan
>> was to keep openjdk-8 in buster for building packages?)
> 
> No please don't built with openjdk-8 if there is a workaround with
> openjdk-11. Building with openjdk-8 is really a last resort solution,
> and very few cases justify its use (see lombok for a good example).

If it is too complicated, too intrusive or takes too much of your time
away I find it OK to build-depend on openjdk-8. Just ensure that
upstream knows about this issue because in the next cycle OpenJDK 8 will
be definitely removed. It is more important that jabref works with
OpenJDK 11 at runtime.

Markus



signature.asc
Description: OpenPGP digital signature


Bug#912221: jabref: incompatible with openjdk 11

2018-10-29 Thread Emmanuel Bourg
Le 30/10/2018 à 00:41, gregor herrmann a écrit :

> I guess we need to make sure that we build with openjdk-8.
> (You know this better than me but I seem to remember that the plan
> was to keep openjdk-8 in buster for building packages?)

No please don't built with openjdk-8 if there is a workaround with
openjdk-11. Building with openjdk-8 is really a last resort solution,
and very few cases justify its use (see lombok for a good example).

Emmanuel Bourg



Bug#912221: jabref: incompatible with openjdk 11

2018-10-29 Thread gregor herrmann
On Mon, 29 Oct 2018 16:33:54 -0700, tony mancill wrote:

> On Mon, Oct 29, 2018 at 11:44:36PM +0100, Emmanuel Bourg wrote:
> > jabref should no longer use the java.se.ee module, it was a temporary
> > module in Java 9 & 10 now removed in Java 11. jabref should add jaxb to
> > its classpath instead.
> Thanks Emmanuel.  Yes, I was able to get things working during the bus
> ride in this morning, 

:)
Great, thanks Tony.

> just need to finish up the wrapper script logic
> so it can start on Java 8, 9, 10, > 10 without the user having to worry
> with it...

Awesome.
 
> I'll look at the FTBFS as well.

I guess we need to make sure that we build with openjdk-8.
(You know this better than me but I seem to remember that the plan
was to keep openjdk-8 in buster for building packages?)


Cheers,
gregor

-- 
 .''`.  https://info.comodo.priv.at -- Debian Developer https://www.debian.org
 : :' : OpenPGP fingerprint D1E1 316E 93A7 60A8 104D  85FA BB3A 6801 8649 AA06
 `. `'  Member VIBE!AT & SPI Inc. -- Supporter Free Software Foundation Europe
   `-   NP: Janis Joplin: Cry Baby (live)


signature.asc
Description: Digital Signature


Bug#912221: jabref: incompatible with openjdk 11

2018-10-29 Thread tony mancill
On Mon, Oct 29, 2018 at 11:44:36PM +0100, Emmanuel Bourg wrote:
> Le 29/10/2018 à 13:54, gregor herrmann a écrit :
> 
> > Now that openjdk 11 is the default, jabref won't start without some
> > help:
> > 
> > % jabref
> > Error occurred during initialization of boot layer
> > java.lang.module.FindException: Module java.se.ee not found
> 
> jabref should no longer use the java.se.ee module, it was a temporary
> module in Java 9 & 10 now removed in Java 11. jabref should add jaxb to
> its classpath instead.

Thanks Emmanuel.  Yes, I was able to get things working during the bus
ride in this morning, just need to finish up the wrapper script logic
so it can start on Java 8, 9, 10, > 10 without the user having to worry
with it...

I'll look at the FTBFS as well.


signature.asc
Description: PGP signature


Bug#912221: jabref: incompatible with openjdk 11

2018-10-29 Thread Emmanuel Bourg
Le 29/10/2018 à 13:54, gregor herrmann a écrit :

> Now that openjdk 11 is the default, jabref won't start without some
> help:
> 
> % jabref
> Error occurred during initialization of boot layer
> java.lang.module.FindException: Module java.se.ee not found

jabref should no longer use the java.se.ee module, it was a temporary
module in Java 9 & 10 now removed in Java 11. jabref should add jaxb to
its classpath instead.

Emmanuel Bourg



Bug#912221: jabref: incompatible with openjdk 11

2018-10-29 Thread gregor herrmann
Control: tag -1 + ftbfs

On Mon, 29 Oct 2018 13:54:26 +0100, gregor herrmann wrote:

> Package: jabref
> Version: 3.8.2+ds-7
> Severity: important
> 
> Now that openjdk 11 is the default, jabref won't start without some
> help:
> 
> % jabref
> Error occurred during initialization of boot layer
> java.lang.module.FindException: Module java.se.ee not found

And it also FTBFS:
https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/jabref.html

(Thanks to Adrian for already raising the severity.)


Cheers,
gregor

-- 
 .''`.  https://info.comodo.priv.at -- Debian Developer https://www.debian.org
 : :' : OpenPGP fingerprint D1E1 316E 93A7 60A8 104D  85FA BB3A 6801 8649 AA06
 `. `'  Member VIBE!AT & SPI Inc. -- Supporter Free Software Foundation Europe
   `-   NP: Simon and Garfunkel: American Tune


signature.asc
Description: Digital Signature


Bug#912221: jabref: incompatible with openjdk 11

2018-10-29 Thread gregor herrmann
Package: jabref
Version: 3.8.2+ds-7
Severity: important

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA512

Now that openjdk 11 is the default, jabref won't start without some
help:

% jabref
Error occurred during initialization of boot layer
java.lang.module.FindException: Module java.se.ee not found

(java.se.ee is required by the /usr/bin/jabref wrapper).

With JAVA_HOME set, all is fine: Both
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ jabref
and
JAVA_HOME=/usr/lib/jvm/java-10-openjdk-amd64/ jabref
still work.


Seems like we need some fiddling with /usr/bin/jabref and/or the
runtime dependencies to make sure we use openjdk {8,9,10} but not 11.
Or better a way to make it work with 11, if that's the default for
buster …


This is also
https://bugs.launchpad.net/bugs/1799106
which brought me to check the situation in Debian.


Cheers,
gregor


- -- System Information:
Debian Release: buster/sid
  APT prefers unstable
  APT policy: (990, 'unstable'), (500, 'unstable-debug'), (500, 
'oldoldstable'), (500, 'experimental'), (500, 'testing'), (500, 'stable'), 
(500, 'oldstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.18.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=de_AT.utf8 (charmap=UTF-8), LANGUAGE=C (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: sysvinit (via /sbin/init)
LSM: AppArmor: enabled

Versions of packages jabref depends on:
ii  java-wrappers   0.3
ii  libandroid-json-java8.1.0+r23-2
ii  libantlr3-runtime-java  3.5.2-9
ii  libantlr4-runtime-java  4.6-2
ii  libbcprov-java  1.60-1
ii  libcommons-cli-java 1.4-1
ii  libcommons-lang3-java   3.8-1
ii  libcommons-logging-java 1.2-2
ii  libglazedlists-java 1.9.1-2
ii  libguava-java   19.0-1
ii  libhttpasyncclient-java 4.1.4-1
ii  libhttpclient-java  4.5.6-1
ii  libhttpmime-java4.5.6-1
ii  libjava-string-similarity-java  0.24-1
ii  libjempbox-java 1:1.8.16-1
ii  libjgoodies-common-java 1.8.1-2
ii  libjgoodies-forms-java  1.9.0-3
ii  libjgoodies-looks-java  2.7.0-3
ii  libjhlabs-filters-java  2.0.235-3
ii  libjsoup-java   1.10.2-2
ii  liblog4j2-java  2.11.1-1
ii  libmicroba-java 1:0.4.4.3-5
ii  libpdfbox-java  1:1.8.16-1
ii  libreoffice-java-common 1:6.1.3~rc1-2
ii  libspin-java1.5+dfsg-8
ii  libswing-layout-java1.0.4-4
ii  libswingx-java  1:1.6.2-3
ii  libunirest-java-java1.4.8-2

Versions of packages jabref recommends:
ii  libmysql-java5.1.45-1
ii  libpostgresql-jdbc-java  42.2.5-1
ii  libreoffice-writer   1:6.1.3~rc1-2
ii  xdg-utils1.1.3-1

Versions of packages jabref suggests:
ii  acroread [pdf-viewer] 9.5.5-dmo5
ii  epdfview [pdf-viewer] 0.1.8-3
ii  evince [postscript-viewer]3.30.1-1
ii  ghostscript [postscript-viewer]   9.25~dfsg-4
ii  gv [postscript-viewer]1:3.7.4-1+b1
ii  mupdf [pdf-viewer]1.14.0+ds1-1
ii  xpdf [pdf-viewer] 3.04-9
ii  zathura-pdf-poppler [pdf-viewer]  0.2.9-1

- -- no debconf information

-BEGIN PGP SIGNATURE-

iQKTBAEBCgB9FiEE0eExbpOnYKgQTYX6uzpoAYZJqgYFAlvXAwJfFIAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEQx
RTEzMTZFOTNBNzYwQTgxMDREODVGQUJCM0E2ODAxODY0OUFBMDYACgkQuzpoAYZJ
qgbPUg//UmAPUuWvMDng/dD5NHbMPJ1ARz0ZDMdSk2cjdnER4E9VtHUE42FdoNda
O7zXgSAMaEazyKQFVyahymdr9boqcRojVwqlSS1K+zfqs7iPFqBeZV9fhwGkhWrF
jzMeA4efO2zs5gLY7Uievu+xpzSQ8UHMmYZ+lXYhgRD7enU9t+2hcFUoF785YFCy
rxJtAN/Ah1kucC4Gzf3NagfPUL+pJbiWDa96dSdUzbKyrrusJf2GoUVAXr22Wm1M
xTy+cam60nc5acvcDjIxh7gp9SyRzytu/3NHXzITurw+tN4e6eDHcWlCqwpvoulK
srLgA33K86Ts8J9HIlJuK+Aje4f5OQ4kIXjyNNBT0uTN4ApAcrw3a7HjdSED1c2v
Q7r3P5rXSKklvwT3p+iyrJPrNr42+CUL8MjJ8mA7dM19t1WD/3voY7bN0C7NrDQ2
zuiR40jH1T5klP6XXhM/0JkBhyiu9+f5vE0u2PuvXJSyf2oVFiTuQ5FocdFmVUVA
bFU/YLmzC0yAbKMlZLCJ+vbRtoPP5bGV1+oUcQ+1Ng+Ra39PCFimoLy5bHTh2dY/
+aZEfnASvAaS6Asn2+vYAUWhNvIIf9AGcJIa5qVAimLl0p3xoQwcKBnh1ra2cIUg
GKeHSLvgeWVL+nqJicYnsBiJJiND8EG9hQiqSTWjO1mmqZhDSeM=
=VcD9
-END PGP SIGNATURE-