Skip to content

Enable Java EA builds and prepare JDK 26#13937

Merged
koppor merged 217 commits intomainfrom
jdk25
Jan 24, 2026
Merged

Enable Java EA builds and prepare JDK 26#13937
koppor merged 217 commits intomainfrom
jdk25

Conversation

@koppor
Copy link
Copy Markdown
Member

@koppor koppor commented Sep 19, 2025

User description

JDK 26 and JavaFX can be build using workflow dispatch -- regular builds still use release versions.

image

Major effort because of https://bugs.openjdk.org/browse/JDK-8342623


Tests - macOS EA build

  • Icon of DMG right
  • Icon of .bib files right - if not, we need to create a second jabref-bibtex.icns file with a different name than the application icon and relink in bibtexAssociations.properties.

This PR builds on #14057.

This PR tries to enable EA builds - to be able to report back to be able to report earlier to https://wiki.openjdk.org/display/quality/Quality+Outreach.


Eclipse Temurin's binaries should soon be available:

image

WIP, because Temurin is not yet available. AKA blocked by adoptium/temurin#96.

Hopefully, we can go back to Temurin (refs adoptium/adoptium-support#1271 (comment) and #13749

Uses "latest" for the dev container to reduce the places where we need to adapt version numbers.

Refs #13933

Maybe related issues

Steps to test

Run JabRef 😅

Mandatory checks


PR Type

Enhancement


Description

  • Enable Early-Access JDK builds via workflow dispatch inputs

  • Add configurable JDK version, branch, and JavaFX version parameters

  • Reorganize build job steps for better artifact upload management

  • Remove JabSrv-CLI and JabLS-CLI from main build, keep as smoke tests

  • Fix JavaFX module configuration for EA JDK compatibility


Diagram Walkthrough

flowchart LR
  WD["Workflow Dispatch<br/>with EA inputs"] -->|useEaJdk| Cond["Conditions Job<br/>Output EA flags"]
  Cond -->|useEaJdk=true| Setup["Setup JDK EA<br/>from jdk.java.net"]
  Setup -->|Modify gradle| Build["Build JabGui<br/>with EA JDK"]
  Build -->|Smoke test| Upload["Upload to<br/>builds.jabref.org"]
  Cond -->|useEaJdk=false| BuildStable["Build with<br/>Stable JDK"]
  BuildStable --> Upload
Loading

File Walkthrough

Relevant files
Enhancement
binaries.yml
Add EA JDK build support and reorganize build steps           

.github/workflows/binaries.yml

  • Add workflow dispatch inputs for useEaJdk, jdkVersion,
    jdkVersionBranch, and javafxVersion
  • Output EA configuration flags from conditions job for downstream use
  • Add setup step for Oracle JDK EA from jdk.java.net when EA builds
    enabled
  • Dynamically modify gradle build files to use EA JDK and JavaFX
    versions
  • Reorganize build steps: move pigz installation after jpackage,
    consolidate upload steps
  • Remove JabSrv-CLI and JabLS-CLI from main build pipeline, keep only
    smoke tests
  • Merge separate comment-on-pr and comment-on-issue jobs into single
    comment-on-issue-and-pr job
  • Add jpackage workaround to copy Linux and Windows icons to jabgui
    directory
+139/-75
Bug fix
org.jabref.gradle.base.dependency-rules.gradle.kts
Fix JavaFX module naming for EA JDK compatibility               

build-logic/src/main/kotlin/org.jabref.gradle.base.dependency-rules.gradle.kts

  • Update JavaFX module list to use full module names (e.g., javafx-base
    instead of base)
  • Add jdk-jsobject to the module list for proper dependency resolution
  • Remove separate module definition for jdk-jsobject as it's now handled
    in the main list
+3/-4     
build.gradle.kts
Add jdk-jsobject dependency and fix Linux packaging           

jabgui/build.gradle.kts

  • Add explicit dependency on org.openjfx:jdk-jsobject with reference to
    JDK-8342623 bug
  • Comment out --linux-rpm-license-type option as Ubuntu uses deb
    packages, not rpm
  • Reorganize dependency comments for clarity
+2/-4     
Miscellaneous
Chocolate.jmp
Add Chocolate.jmp mind map resource file                                 

jablib/src/main/resources/Chocolate.jmp

  • Add new jsMind mind map file with sample bibliography entry
+1/-0     
Documentation
build.gradle.kts
Update JavaFX version documentation and formatting             

versions/build.gradle.kts

  • Add comment noting that JavaFX version updates should also update
    binaries.yml
  • Remove outdated comment about JavaFX 25 requirement for jdk-jsobject
  • Fix formatting consistency in javafx-graphics constraint
+2/-2     

@Siedlerchr
Copy link
Copy Markdown
Member

Requires gradle 9.1

@koppor
Copy link
Copy Markdown
Member Author

koppor commented Sep 23, 2025

Requires gradle 9.1

Then: Runners to 24; 25 is installed via toolchain 😅

Or wait until we updated our Gradle fork

@koppor
Copy link
Copy Markdown
Member Author

koppor commented Sep 29, 2025

With #13719, we use the most recent gradle development version

@koppor koppor marked this pull request as ready for review September 29, 2025 16:58
@koppor
Copy link
Copy Markdown
Member Author

koppor commented Sep 29, 2025

Are no x86 mac builds a show stopper?

grafik

@koppor
Copy link
Copy Markdown
Member Author

koppor commented Sep 29, 2025

seems to be fine for macOS:


  Java configuration:
    Distribution: temurin
    Version: 25.0.0+36.0.LTS
    Path: /Users/runner/hostedtoolcache/Java_Temurin-Hotspot_jdk/25.0.0-36.0.LTS/x64/Contents/Home

@koppor koppor added the dev: binaries Binary builds should be uploaded to builds.jabref.org label Sep 29, 2025
@koppor
Copy link
Copy Markdown
Member Author

koppor commented Sep 29, 2025

Mhh...

grafik

@koppor
Copy link
Copy Markdown
Member Author

koppor commented Sep 29, 2025

Seems to be the right commit - 0ae6281

@koppor
Copy link
Copy Markdown
Member Author

koppor commented Sep 29, 2025

macOS does not run with Amazon:

(loaded from file /Users/runner/work/***/***/jabgui/src/main/resources/icons/***.icns).
[18:17:44.601] jdk.jpackage.internal.model.PackagerException: java.nio.file.NoSuchFileException: ***.icns
	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.execute(PackagingPipeline.java:487)
	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.execute(PackagingPipeline.java:68)
	at jdk.jpackage/jdk.jpackage.internal.PackagerBuilder.execute(PackagerBuilder.java:67)
	at jdk.jpackage/jdk.jpackage.internal.MacDmgPackager$Builder.execute(MacDmgPackager.java:81)
	at jdk.jpackage/jdk.jpackage.internal.MacDmgBundler.execute(MacDmgBundler.java:80)
	at jdk.jpackage/jdk.jpackage.internal.Arguments.executeBundler(Arguments.java:741)
	at jdk.jpackage/jdk.jpackage.internal.Arguments.generateBundle(Arguments.java:702)
	at jdk.jpackage/jdk.jpackage.internal.Arguments.processArguments(Arguments.java:553)
	at jdk.jpackage/jdk.jpackage.main.Main.execute(Main.java:93)
	at jdk.jpackage/jdk.jpackage.main.Main.main(Main.java:54)
Caused by: java.nio.file.NoSuchFileException: ***.icns
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixFileSystem.copy(UnixFileSystem.java:960)
	at java.base/sun.nio.fs.UnixFileSystemProvider.copy(UnixFileSystemProvider.java:280)
	at java.base/java.nio.file.Files.copy(Files.java:1192)
	at jdk.jpackage/jdk.jpackage.internal.MacPackagingPipeline.writeFileAssociationIcons(MacPackagingPipeline.java:434)
	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline$DefaultTaskContext.execute(PackagingPipeline.java:573)
	at jdk.jpackage/jdk.jpackage.internal.MacPackagingPipeline$TaskContextProxy.execute(MacPackagingPipeline.java:454)
	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.lambda$createTask$0(PackagingPipeline.java:604)
	at jdk.jpackage/jdk.jpackage.internal.pipeline.TaskPipelineBuilder$SequentialWrapperTask.call(TaskPipelineBuilder.java:130)
	at jdk.jpackage/jdk.jpackage.internal.pipeline.TaskPipelineBuilder$SequentialWrapperTask.call(TaskPipelineBuilder.java:121)
	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.execute(PackagingPipeline.java:480)
	... 9 more

@koppor koppor changed the title [WIP] Update to JDK25 (Temurin) [WIP] Update to JDK25 (Amazon) Sep 29, 2025
@koppor koppor mentioned this pull request Sep 29, 2025
1 task
@koppor
Copy link
Copy Markdown
Member Author

koppor commented Sep 29, 2025

Supersed by #13991 Temurin does not work, because of

--add-modules jdk.incubator.vector

@koppor koppor closed this Sep 29, 2025
@koppor koppor reopened this Sep 29, 2025
@Siedlerchr
Copy link
Copy Markdown
Member

22:12:32.668] Benutzerdefinierte Packageressource [DMG-Hintergrund] wird verwendet (aus JabRef-background.tiff geladen).
[22:12:32.673] Benutzerdefinierte Packageressource [Symbol "Datenträger"] wird verwendet (aus JabRef-volume.icns geladen).
[22:12:32.675] DMG-Setup wird vorbereitet: /var/folders/fk/ymndv_ds5h1dv11fbh61v4g40000gn/T/jdk.jpackage12833249008220820156/config/JabRef-dmg-setup.scpt.
[22:12:32.676] Benutzerdefinierte Packageressource [DMG-Setupskript] wird verwendet (aus JabRef-dmg-setup.scpt geladen).
[22:12:32.679] Benutzerdefinierte Packageressource [Info.plist von Java Runtime] wird verwendet (aus Runtime-Info.plist geladen).
[22:12:32.680] Benutzerdefinierte Packageressource [icon] wird verwendet (aus JabRef.icns geladen).
[22:12:32.715] jdk.jpackage.internal.model.PackagerException: java.nio.file.NoSuchFileException: jabref.icns
	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.execute(PackagingPipeline.java:487)
	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.execute(PackagingPipeline.java:68)
	at jdk.jpackage/jdk.jpackage.internal.PackagerBuilder.execute(PackagerBuilder.java:67)
	at jdk.jpackage/jdk.jpackage.internal.MacDmgPackager$Builder.execute(MacDmgPackager.java:81)
	at jdk.jpackage/jdk.jpackage.internal.MacDmgBundler.execute(MacDmgBundler.java:80)
	at jdk.jpackage/jdk.jpackage.internal.Arguments.executeBundler(Arguments.java:741)
	at jdk.jpackage/jdk.jpackage.internal.Arguments.generateBundle(Arguments.java:702)
	at jdk.jpackage/jdk.jpackage.internal.Arguments.processArguments(Arguments.java:553)
	at jdk.jpackage/jdk.jpackage.main.Main.execute(Main.java:93)
	at jdk.jpackage/jdk.jpackage.main.Main.main(Main.java:54)
Caused by: java.nio.file.NoSuchFileException: jabref.icns
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixFileSystem.copy(UnixFileSystem.java:960)
	at java.base/sun.nio.fs.UnixFileSystemProvider.copy(UnixFileSystemProvider.java:280)
	at java.base/java.nio.file.Files.copy(Files.java:1192)
	at jdk.jpackage/jdk.jpackage.internal.MacPackagingPipeline.writeFileAssociationIcons(MacPackagingPipeline.java:434)
	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline$DefaultTaskContext.execute(PackagingPipeline.java:573)
	at jdk.jpackage/jdk.jpackage.internal.MacPackagingPipeline$TaskContextProxy.execute(MacPackagingPipeline.java:454)
	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.lambda$createTask$0(PackagingPipeline.java:604)
	at jdk.jpackage/jdk.jpackage.internal.pipeline.TaskPipelineBuilder$SequentialWrapperTask.call(TaskPipelineBuilder.java:130)
	at jdk.jpackage/jdk.jpackage.internal.pipeline.TaskPipelineBuilder$SequentialWrapperTask.call(TaskPipelineBuilder.java:121)
	at jdk.jpackage/jdk.jpackage.internal.PackagingPipeline.execute(PackagingPipeline.java:480)
	... 9 more
java.nio.file.NoSuchFileException: jabref.icns

@koppor koppor removed the dev: binaries Binary builds should be uploaded to builds.jabref.org label Jan 23, 2026
@JabRef JabRef deleted a comment from github-actions Bot Jan 23, 2026
@koppor koppor enabled auto-merge January 23, 2026 10:40
@koppor koppor mentioned this pull request Jan 23, 2026
2 tasks
@koppor
Copy link
Copy Markdown
Member Author

koppor commented Jan 23, 2026

Latest enhancement: If GitHub artifact upload is wished - the artifacts are uploaded as soon as they are ready.

image

@koppor
Copy link
Copy Markdown
Member Author

koppor commented Jan 23, 2026

JDK27 build also working

image

@koppor
Copy link
Copy Markdown
Member Author

koppor commented Jan 24, 2026

@koppor
Copy link
Copy Markdown
Member Author

koppor commented Jan 24, 2026

Tested in this branch, will merge to be sure that it works :)

@koppor koppor disabled auto-merge January 24, 2026 17:14
@koppor koppor merged commit bdeefc4 into main Jan 24, 2026
62 checks passed
@koppor koppor deleted the jdk25 branch January 24, 2026 17:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dev: ci-cd 📌 Pinned Review effort 4/5 status: depends-on-external A bug or issue that depends on an update of an external library status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants