jabref
jabref copied to clipboard
Code length outside the allowed range during linking
JabRef version
5.11 (latest release)
Operating system
GNU / Linux
Details on version and operating system
Arch Linux (stable kernel 6.5.9.arch2-1)
Checked with the latest development build (copy version output from About dialog)
- [X] I made a backup of my libraries before testing the latest development version.
- [X] I have tested the latest development version and the problem persists
Steps to reproduce the behaviour
Just execute ./gradlew assemble
and ./gradlew jlink
at the latest commit in main
with OpenJDK 21
. The assemble
task finishes without errors, however jlink
task fails with the following message:
Error: java.lang.IllegalArgumentException: Code length 71614 is outside the allowed range in moduleDescriptors()ModuleDescriptor[]
> Task :jlink FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':jlink'.
> Process 'command '/usr/lib/jvm/java-21-openjdk/bin/jlink'' finished with non-zero exit value 1
Appendix
Log File
Providers:
org.jabref provides com.airhacks.afterburner.injection.PresenterFactory used by afterburner.fx
org.jabref provides com.airhacks.afterburner.views.ResourceLocator used by afterburner.fx
com.fasterxml.jackson.dataformat.yaml provides com.fasterxml.jackson.core.JsonFactory not used by any observable module
com.fasterxml.jackson.databind provides com.fasterxml.jackson.core.ObjectCodec used by com.fasterxml.jackson.core
com.fasterxml.jackson.dataformat.yaml provides com.fasterxml.jackson.core.ObjectCodec used by com.fasterxml.jackson.core
com.fasterxml.jackson.datatype.jsr310 provides com.fasterxml.jackson.databind.Module used by com.fasterxml.jackson.databind
jdk.jdi provides com.sun.jdi.connect.Connector used by jdk.jdi
jdk.attach provides com.sun.tools.attach.spi.AttachProvider used by jdk.attach
jdk.javadoc provides com.sun.tools.doclint.DocLint used by jdk.compiler
jdk.compiler provides com.sun.tools.javac.platform.PlatformProvider used by jdk.compiler
org.eclipse.angus.activation provides jakarta.activation.spi.MailcapRegistryProvider used by jakarta.activation
org.eclipse.angus.activation provides jakarta.activation.spi.MimeTypeRegistryProvider used by jakarta.activation
java.desktop provides java.net.ContentHandlerFactory used by java.base
jdk.charsets provides java.nio.charset.spi.CharsetProvider used by java.base
java.base provides java.nio.file.spi.FileSystemProvider used by java.base
jdk.zipfs provides java.nio.file.spi.FileSystemProvider used by java.base
java.naming provides java.security.Provider used by java.base
java.security.jgss provides java.security.Provider used by java.base
java.security.sasl provides java.security.Provider used by java.base
java.smartcardio provides java.security.Provider used by java.base
java.xml.crypto provides java.security.Provider used by java.base
jdk.crypto.cryptoki provides java.security.Provider used by java.base
jdk.crypto.ec provides java.security.Provider used by java.base
jdk.security.jgss provides java.security.Provider used by java.base
org.jabref.merged.module provides java.security.Provider used by java.base
org.jabref.merged.module provides java.sql.Driver used by java.sql
java.base provides java.util.random.RandomGenerator used by java.base
jdk.random provides java.util.random.RandomGenerator used by java.base
jdk.compiler provides java.util.spi.ToolProvider used by java.base
jdk.jartool provides java.util.spi.ToolProvider used by java.base
jdk.javadoc provides java.util.spi.ToolProvider used by java.base
jdk.jdeps provides java.util.spi.ToolProvider used by java.base
jdk.jlink provides java.util.spi.ToolProvider used by java.base
jdk.jpackage provides java.util.spi.ToolProvider used by java.base
java.management.rmi provides javax.management.remote.JMXConnectorProvider used by java.management
java.management.rmi provides javax.management.remote.JMXConnectorServerProvider used by java.management
jdk.naming.dns provides javax.naming.spi.InitialContextFactory used by java.naming
jdk.naming.rmi provides javax.naming.spi.InitialContextFactory used by java.naming
java.desktop provides javax.print.PrintServiceLookup used by java.desktop
java.desktop provides javax.print.StreamPrintServiceFactory used by java.desktop
java.management provides javax.security.auth.spi.LoginModule used by java.base
jdk.security.auth provides javax.security.auth.spi.LoginModule used by java.base
java.desktop provides javax.sound.midi.spi.MidiDeviceProvider used by java.desktop
java.desktop provides javax.sound.midi.spi.MidiFileReader used by java.desktop
java.desktop provides javax.sound.midi.spi.MidiFileWriter used by java.desktop
java.desktop provides javax.sound.midi.spi.SoundbankReader used by java.desktop
java.desktop provides javax.sound.sampled.spi.AudioFileReader used by java.desktop
java.desktop provides javax.sound.sampled.spi.AudioFileWriter used by java.desktop
java.desktop provides javax.sound.sampled.spi.FormatConversionProvider used by java.desktop
java.desktop provides javax.sound.sampled.spi.MixerProvider used by java.desktop
jdk.javadoc provides javax.tools.DocumentationTool used by java.compiler
jdk.compiler provides javax.tools.JavaCompiler used by java.compiler
jdk.compiler provides javax.tools.Tool not used by any observable module
jdk.javadoc provides javax.tools.Tool not used by any observable module
jdk.jshell provides javax.tools.Tool not used by any observable module
com.fasterxml.aalto provides javax.xml.stream.XMLEventFactory used by java.xml
com.fasterxml.aalto provides javax.xml.stream.XMLInputFactory used by java.xml
com.fasterxml.aalto provides javax.xml.stream.XMLOutputFactory used by java.xml
jdk.editpad provides jdk.internal.editor.spi.BuildInEditorProvider used by jdk.jshell
jdk.internal.le provides jdk.internal.io.JdkConsoleProvider used by java.base
jdk.jshell provides jdk.internal.io.JdkConsoleProvider used by java.base
java.logging provides jdk.internal.logger.DefaultLoggerFinder used by java.base
jdk.jpackage provides jdk.jpackage.internal.Bundler used by jdk.jpackage
jdk.jpackage provides jdk.jpackage.internal.Bundlers used by jdk.jpackage
jdk.jshell provides jdk.jshell.spi.ExecutionControlProvider used by jdk.jshell
jdk.jlink provides jdk.tools.jlink.plugin.Plugin used by jdk.jlink
org.apache.lucene.analysis.common provides org.apache.lucene.analysis.CharFilterFactory used by org.apache.lucene.core
org.apache.lucene.analysis.common provides org.apache.lucene.analysis.TokenFilterFactory used by org.apache.lucene.core
org.apache.lucene.analysis.common provides org.apache.lucene.analysis.TokenizerFactory used by org.apache.lucene.core
org.apache.lucene.core provides org.apache.lucene.analysis.TokenizerFactory used by org.apache.lucene.core
org.apache.lucene.core provides org.apache.lucene.codecs.Codec used by org.apache.lucene.core
org.apache.lucene.core provides org.apache.lucene.codecs.DocValuesFormat used by org.apache.lucene.core
org.apache.lucene.core provides org.apache.lucene.codecs.KnnVectorsFormat used by org.apache.lucene.core
org.apache.lucene.core provides org.apache.lucene.codecs.PostingsFormat used by org.apache.lucene.core
org.apache.lucene.sandbox provides org.apache.lucene.codecs.PostingsFormat used by org.apache.lucene.core
org.apache.lucene.core provides org.apache.lucene.index.SortFieldProvider used by org.apache.lucene.core
org.freedesktop.dbus.transport.jre provides org.freedesktop.dbus.spi.transport.ITransportProvider used by org.freedesktop.dbus
org.jabref provides org.kordamp.ikonli.IkonHandler used by org.jabref,org.kordamp.ikonli.core
org.kordamp.ikonli.bootstrapicons provides org.kordamp.ikonli.IkonHandler used by org.jabref,org.kordamp.ikonli.core
org.kordamp.ikonli.core provides org.kordamp.ikonli.IkonHandler used by org.jabref,org.kordamp.ikonli.core
org.kordamp.ikonli.material provides org.kordamp.ikonli.IkonHandler used by org.jabref,org.kordamp.ikonli.core
org.kordamp.ikonli.materialdesign provides org.kordamp.ikonli.IkonHandler used by org.jabref,org.kordamp.ikonli.core
org.kordamp.ikonli.materialdesign2 provides org.kordamp.ikonli.IkonHandler used by org.jabref,org.kordamp.ikonli.core
org.jabref provides org.kordamp.ikonli.IkonProvider used by org.jabref
org.kordamp.ikonli.bootstrapicons provides org.kordamp.ikonli.IkonProvider used by org.jabref
org.kordamp.ikonli.core provides org.kordamp.ikonli.IkonProvider used by org.jabref
org.kordamp.ikonli.material provides org.kordamp.ikonli.IkonProvider used by org.jabref
org.kordamp.ikonli.materialdesign provides org.kordamp.ikonli.IkonProvider used by org.jabref
org.kordamp.ikonli.materialdesign2 provides org.kordamp.ikonli.IkonProvider used by org.jabref
org.jabref.merged.module provides org.mariadb.jdbc.authentication.AuthenticationPlugin used by org.jabref.merged.module
org.jabref.merged.module provides org.mariadb.jdbc.credential.CredentialPlugin used by org.jabref,org.jabref.merged.module
org.jabref.merged.module provides org.mariadb.jdbc.tls.TlsSocketPlugin used by org.jabref.merged.module
org.tinylog.api.slf4j provides org.slf4j.spi.SLF4JServiceProvider used by org.slf4j
org.tinylog.impl provides org.tinylog.converters.FileConverter used by org.tinylog.impl
org.tinylog.impl provides org.tinylog.policies.Policy used by org.tinylog.impl
org.tinylog.impl provides org.tinylog.provider.LoggingProvider used by org.tinylog.api
org.tinylog.impl provides org.tinylog.throwable.ThrowableFilter used by org.tinylog.impl
org.jabref provides org.tinylog.writers.Writer used by org.tinylog.impl
org.tinylog.impl provides org.tinylog.writers.Writer used by org.tinylog.impl
java.desktop provides sun.datatransfer.DesktopDatatransferService used by java.datatransfer
jdk.internal.jvmstat provides sun.jvmstat.monitor.MonitoredHostService used by jdk.internal.jvmstat
jdk.jstatd provides sun.jvmstat.monitor.MonitoredHostService used by jdk.internal.jvmstat
jdk.management provides sun.management.spi.PlatformMBeanProvider used by java.management
jdk.management.jfr provides sun.management.spi.PlatformMBeanProvider used by java.management
jdk.unsupported.desktop provides sun.swing.InteropProvider used by java.desktop
jdk.localedata provides sun.util.locale.provider.LocaleDataMetaInfo used by java.base
jdk.localedata provides sun.util.resources.LocaleData$CommonResourceBundleProvider used by java.base
jdk.localedata provides sun.util.resources.LocaleData$SupplementaryResourceBundleProvider used by java.base
Error: java.lang.IllegalArgumentException: Code length 71614 is outside the allowed range in moduleDescriptors()ModuleDescriptor[]
> Task :jlink FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':jlink'.
> Process 'command '/usr/lib/jvm/java-21-openjdk/bin/jlink'' finished with non-zero exit value 1
Hi, you need OpenJDK version 21.0.1 because of the fixed jlink bug (see number 39 in the release notes) https://www.oracle.com/java/technologies/javase/21-0-1-relnotes.html
You also get the latest main version binaries always here https://builds.jabref.org/main/
I'm currently using OpenJDK 21 2023-09-19 build 21+35
(https://openjdk.org/projects/jdk/21/). Version 21.0.1 doesn't exist for OpenJDK but for Oracle JDK. The OpenJDK page for this bug (https://bugs.openjdk.org/browse/JDK-8240567) seems to say that the fix would be included only in OpenJDK 22 which is still in development.
Until the new version has been released, how can I manually build JabRef without running the jlink
task and without relying on Oracle's proprietary version of JDK? I need it in order to create a package for Arch Linux that points to the latest commit of this repo.
@Loara The bug was fixed by us in jdk22 but backported to 21.0.1 .
You could use one of the alternative jdk provider, e.g. Eclipse Temurin https://aur.archlinux.org/packages/jdk-temurin that seems to be availabe in 21.0.1.
Other option is to use the prebuilt binaries e.g. linux portable
Edit// Please also note that the latest main now requires minimum version of GTK 3.8, GTK2 got removed
I'm currently using
OpenJDK 21 2023-09-19 build 21+35
(https://openjdk.org/projects/jdk/21/).
Please use a build of https://github.com/openjdk/jdk21u/.
Version 21.0.1 doesn't exist for OpenJDK but for Oracle JDK.
As @Siedlerchr pointed out, there is a temurin build available arch. How hard is it to use that one?
As @Siedlerchr pointed out, there is a temurin build available arch. How hard is it to use that one?
Because OpenJDK is the only Java build that is officially maintained by the Arch team, and i prefer to reduce at minimum AUR dependencies, but if this can't be achieved then I'll follow the @Siedlerchr's solution.
Maybe you can report/ask the maintainer that there is a newer version available https://archlinux.org/packages/extra/x86_64/jdk-openjdk/flag/
Paolo @.***> schrieb am Fr., 10. Nov. 2023, 12:12:
As @Siedlerchr https://github.com/Siedlerchr pointed out, there is a temurin build available arch. How hard is it to use that one?
Because OpenJDK is the only Java build that is officially maintained by the Arch team, and i prefer to reduce at minimum AUR dependencies, but if this can't be achieved then I'll follow the @Siedlerchr https://github.com/Siedlerchr's solution.
— Reply to this email directly, view it on GitHub https://github.com/JabRef/jabref/issues/10626#issuecomment-1805530421, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACOFZCCPNDM7RD74HA5NFLYDYDYJAVCNFSM6AAAAAA7BMS2GGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQMBVGUZTANBSGE . You are receiving this because you were mentioned.Message ID: @.***>
@Loara I just checked again and there is now openjdk 21.02 available jdk-openjdk 21.0.2.u13-3 [extra] (x86_64)
Therefore this should no longer be a problem