diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index b5d66d8eea5..103788892f4 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -31,9 +31,9 @@
// Install java.
// See https://github.com/devcontainers/features/tree/main/src/java#options for details.
"ghcr.io/devcontainers/features/java:1": {
- "version": "24.0.2-amzn",
+ "version": "latest",
"installGradle": true,
- "gradleVersion": "8.14.3",
+ "gradleVersion": "latest",
"jdkDistro": "Corretto"
}
}
diff --git a/.github/workflows/binaries.yml b/.github/workflows/binaries.yml
index d6886b7b3bd..8b75ab10303 100644
--- a/.github/workflows/binaries.yml
+++ b/.github/workflows/binaries.yml
@@ -193,14 +193,14 @@ jobs:
matrix:
include:
# if you change the os version rename all other occurrences
- - os: ubuntu-22.04
- displayName: linux
+ - os: ubuntu-22.04 # if this is adapted, also the next lines need to be adapted
+ displayName: linux-amd64
archivePortable: tar -c -C jabgui/build/packages/ubuntu-22.04 JabRef | pigz --rsyncable > jabgui/build/packages/ubuntu-22.04/JabRef-portable_linux.tar.gz && rm -R jabgui/build/packages/ubuntu-22.04/JabRef
archivePortableJabKit: tar -c -C jabkit/build/packages/ubuntu-22.04 jabkit | pigz --rsyncable > jabkit/build/packages/ubuntu-22.04/jabkit-portable_linux.tar.gz && rm -R jabkit/build/packages/ubuntu-22.04/jabkit
archivePortableJabLS: tar -c -C jabls-cli/build/packages/ubuntu-22.04 jabls | pigz --rsyncable > jabls-cli/build/packages/ubuntu-22.04/jabls-portable_linux.tar.gz && rm -R jabls-cli/build/packages/ubuntu-22.04/jabls
suffix: ''
archForDebianRepack: '_amd64'
- - os: ubuntu-22.04-arm
+ - os: ubuntu-22.04-arm # if this is adapted, also the next lines need to be adapted
displayName: linux-arm
archivePortable: tar -c -C jabgui/build/packages/ubuntu-22.04-arm JabRef | pigz --rsyncable > jabgui/build/packages/ubuntu-22.04-arm/JabRef-portable_linux_arm64.tar.gz && rm -R jabgui/build/packages/ubuntu-22.04-arm/JabRef
archivePortableJabKit: tar -c -C jabkit/build/packages/ubuntu-22.04-arm jabkit | pigz --rsyncable > jabkit/build/packages/ubuntu-22.04-arm/jabkit-portable_linux_arm64.tar.gz && rm -R jabkit/build/packages/ubuntu-22.04-arm/jabkit
@@ -208,25 +208,25 @@ jobs:
suffix: '_arm64'
archForDebianRepack: '_arm64'
- os: windows-latest
- displayName: windows
+ displayName: windows-amd64
archivePortable: 7z a -r jabgui/build/packages/windows-latest/JabRef-portable_windows.zip ./jabgui/build/packages/windows-latest/JabRef && rm -R jabgui/build/packages/windows-latest/JabRef
archivePortableJabKit: 7z a -r jabkit/build/packages/windows-latest/jabkit-portable_windows.zip ./jabkit/build/packages/windows-latest/jabkit && rm -R jabkit/build/packages/windows-latest/jabkit
archivePortableJabLS: 7z a -r jabls-cli/build/packages/windows-latest/jabls-portable_windows.zip ./jabls-cli/build/packages/windows-latest/jabls && rm -R jabls-cli/build/packages/windows-latest/jabls
suffix: ''
archForDebianRepack: ''
- - os: macos-15-intel # intel image
- displayName: macOS
- archivePortable: 7z a -r jabgui/build/packages/macos-15-intel/JabRef-portable_macos.zip ./jabgui/build/packages/macos-15-intel/JabRef.app && rm -R jabgui/build/packages/macos-15-intel/JabRef.app
- archivePortableJabKit: 7z a -r jabkit/build/packages/macos-15-intel/jabkit-portable_macos.zip ./jabkit/build/packages/macos-15-intel/jabkit.app && rm -R jabkit/build/packages/macos-15-intel/jabkit.app
- archivePortableJabLS: 7z a -r jabls-cli/build/packages/macos-15-intel/jabls-portable_macos.zip ./jabls-cli/build/packages/macos-15-intel/jabls.app && rm -R jabls-cli/build/packages/macos-15-intel/jabls.app
- suffix: ''
+ - os: macos-15-intel
+ displayName: macOS-intel
+ archivePortable: 7z a -r jabgui/build/packages/macos-15-intel/JabRef-portable_macos-intel.zip ./jabgui/build/packages/macos-15-intel/JabRef.app && rm -R jabgui/build/packages/macos-15-intel/JabRef.app
+ archivePortableJabKit: 7z a -r jabkit/build/packages/macos-15-intel/jabkit-portable_macos-intel.zip ./jabkit/build/packages/macos-15-intel/jabkit.app && rm -R jabkit/build/packages/macos-15-intel/jabkit.app
+ archivePortableJabLS: 7z a -r jabls-cli/build/packages/macos-15-intel/jabls-portable_macos-intel.zip ./jabls-cli/build/packages/macos-15-intel/jabls.app && rm -R jabls-cli/build/packages/macos-15-intel/jabls.app
+ suffix: '_intel'
archForDebianRepack: ''
- os: macos-15
- displayName: macOS-arm
- archivePortable: 7z a -r jabgui/build/packages/macos-15/JabRef-portable_macos-arm.zip ./jabgui/build/packages/macos-15/JabRef.app && rm -R jabgui/build/packages/macos-15/JabRef.app
- archivePortableJabKit: 7z a -r jabkit/build/packages/macos-15/jabkit-portable_macos-arm.zip ./jabkit/build/packages/macos-15/jabkit.app && rm -R jabkit/build/packages/macos-15/jabkit.app
- archivePortableJabLS: 7z a -r jabls-cli/build/packages/macos-15/jabls-portable_macos-arm.zip ./jabls-cli/build/packages/macos-15/jabls.app && rm -R jabls-cli/build/packages/macos-15/jabls.app
- suffix: '_arm64'
+ displayName: macOS-silicon
+ archivePortable: 7z a -r jabgui/build/packages/macos-15/JabRef-portable_macos-silicon.zip ./jabgui/build/packages/macos-15/JabRef.app && rm -R jabgui/build/packages/macos-15/JabRef.app
+ archivePortableJabKit: 7z a -r jabkit/build/packages/macos-15/jabkit-portable_macos-silicon.zip ./jabkit/build/packages/macos-15/jabkit.app && rm -R jabkit/build/packages/macos-15/jabkit.app
+ archivePortableJabLS: 7z a -r jabls-cli/build/packages/macos-15/jabls-portable_macos-silicon.zip ./jabls-cli/build/packages/macos-15/jabls.app && rm -R jabls-cli/build/packages/macos-15/jabls.app
+ suffix: '_silicon'
archForDebianRepack: ''
runs-on: ${{ matrix.os }}
outputs:
@@ -257,7 +257,7 @@ jobs:
- name: Setup JDK
uses: actions/setup-java@v5
with:
- java-version: '24'
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Setup Gradle
@@ -283,7 +283,7 @@ jobs:
with:
p12-file-base64: ${{ secrets.OSX_SIGNING_CERT }}
p12-password: ${{ secrets.OSX_CERT_PWD }}
- keychain-password: jabref
+ keychain-password: tEmPoRaRY-PaeSWD
- name: Setup macOS key chain for app id cert
if: (startsWith(matrix.os, 'macos')) && (needs.conditions.outputs.secretspresent == 'true')
uses: slidoapp/import-codesign-certs@1923310662e8682dd05b76b612b53301f431cd5d
@@ -291,7 +291,7 @@ jobs:
p12-file-base64: ${{ secrets.OSX_SIGNING_CERT_APPLICATION }}
p12-password: ${{ secrets.OSX_CERT_PWD }}
create-keychain: false
- keychain-password: jabref
+ keychain-password: tEmPoRaRY-PaeSWD
- name: Build runtime image and installer
shell: bash
run: ./gradlew -i -PprojVersion="${{ steps.gitversion.outputs.AssemblySemVer }}" -PprojVersionInfo="${{ steps.gitversion.outputs.InformationalVersion }}" :jabgui:jpackage
@@ -409,7 +409,7 @@ jobs:
name: JabRef-${{ matrix.os }}-tbn
path: |
jabgui/build/packages/${{ matrix.os }}
- jabkit/build/packages/${{ matrix.os }}
+ jabls-cli/build/packages/${{ matrix.os }}
compression-level: 0 # no compression
# endregion
@@ -485,7 +485,25 @@ jobs:
matrix:
include:
- os: macos-15
- displayName: macOS (ARM64)
+ displayName: JabGui macOS (ARM64)
+ path: 'jabgui'
+ prefix: 'JabRef'
+ suffix: '_silicon'
+ - os: macos-15-intel
+ displayName: JabGui macOS (intel)
+ path: 'jabgui'
+ prefix: 'JabRef'
+ suffix: '_intel'
+ - os: macos-15
+ displayName: jabls macOS (ARM64)
+ path: 'jabls'
+ prefix: 'jabls'
+ suffix: '_silicon'
+ - os: macos-15-intel
+ displayName: jabls macOS (intel)
+ path: 'jabls'
+ prefix: 'jabls'
+ suffix: '_intel'
runs-on: ${{ matrix.os }}
steps:
- name: Download from GitHub workflow artifacts store (macOS)
@@ -495,21 +513,21 @@ jobs:
- name: Notarize dmg
shell: bash
run: |
- cd jabgui
+ cd ${{ matrix.path }}
find . -type f
xcrun notarytool store-credentials "notarytool-profile" --apple-id "vorstand@jabref.org" --team-id "6792V39SK3" --password "${{ secrets.OSX_NOTARIZATION_APP_PWD }}"
- xcrun notarytool submit build/packages/${{ matrix.os }}/JabRef-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.dmg --keychain-profile "notarytool-profile" --wait
- xcrun stapler staple build/packages/${{ matrix.os }}/JabRef-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.dmg
+ xcrun notarytool submit build/packages/${{ matrix.os }}/${{ matrix.prefix }}-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.dmg --keychain-profile "notarytool-profile" --wait
+ xcrun stapler staple build/packages/${{ matrix.os }}/${{ matrix.prefix }}-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.dmg
- name: Notarize pkg
shell: bash
run: |
- cd jabgui
+ cd ${{ matrix.path }}
xcrun notarytool store-credentials "notarytool-profile" --apple-id "vorstand@jabref.org" --team-id "6792V39SK3" --password "${{ secrets.OSX_NOTARIZATION_APP_PWD }}"
- xcrun notarytool submit build/packages/${{ matrix.os }}/JabRef-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.pkg --keychain-profile "notarytool-profile" --wait
- xcrun stapler staple build/packages/${{ matrix.os }}/JabRef-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.pkg
+ xcrun notarytool submit build/packages/${{ matrix.os }}/${{ matrix.prefix }}-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.pkg --keychain-profile "notarytool-profile" --wait
+ xcrun stapler staple build/packages/${{ matrix.os }}/${{ matrix.prefix }}-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.pkg
- name: Upload to builds.jabref.org
shell: bash
run: |
echo "${{ secrets.buildJabRefPrivateKey }}" > sshkey
chmod 600 sshkey
- rsync -rt --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r --itemize-changes --stats --rsync-path="mkdir -p /var/www/builds.jabref.org/www/${{ needs.build.outputs.branchname }} && rsync" -e 'ssh -p 9922 -i sshkey -o StrictHostKeyChecking=no' jabgui/build/packages/${{ matrix.os }}/ jrrsync@build-upload.jabref.org:/var/www/builds.jabref.org/www/${{ needs.build.outputs.branchname }}/
+ rsync -rt --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r --itemize-changes --stats --rsync-path="mkdir -p /var/www/builds.jabref.org/www/${{ needs.build.outputs.branchname }} && rsync" -e 'ssh -p 9922 -i sshkey -o StrictHostKeyChecking=no' ${{ matrix.path }}/build/packages/${{ matrix.os }}/ jrrsync@build-upload.jabref.org:/var/www/builds.jabref.org/www/${{ needs.build.outputs.branchname }}/
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 5f710c265f7..afa13ff0cdb 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -100,7 +100,7 @@ jobs:
- name: Setup JDK
uses: actions/setup-java@v5
with:
- java-version: '24'
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Setup Gradle
diff --git a/.github/workflows/run-openrewrite.yml b/.github/workflows/run-openrewrite.yml
index 6ee606c65ab..6536a448ba2 100644
--- a/.github/workflows/run-openrewrite.yml
+++ b/.github/workflows/run-openrewrite.yml
@@ -33,7 +33,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Setup Gradle
diff --git a/.github/workflows/sbom-pr.yml b/.github/workflows/sbom-pr.yml
index 2d15fcfa75a..3971248d872 100644
--- a/.github/workflows/sbom-pr.yml
+++ b/.github/workflows/sbom-pr.yml
@@ -22,7 +22,7 @@ jobs:
uses: actions/setup-java@v5
with:
distribution: 'corretto'
- java-version: '24'
+ java-version: 25
check-latest: true
cache: 'gradle'
diff --git a/.github/workflows/tests-code-fetchers.yml b/.github/workflows/tests-code-fetchers.yml
index 397d2789a20..744a2376b37 100644
--- a/.github/workflows/tests-code-fetchers.yml
+++ b/.github/workflows/tests-code-fetchers.yml
@@ -56,7 +56,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Setup Gradle
diff --git a/.github/workflows/tests-code.yml b/.github/workflows/tests-code.yml
index 25911c63f65..e7fa8fe845f 100644
--- a/.github/workflows/tests-code.yml
+++ b/.github/workflows/tests-code.yml
@@ -52,7 +52,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Run checkstyle reporter
@@ -130,6 +130,8 @@ jobs:
modernizer:
name: Modernizer
runs-on: ubuntu-latest
+ # Version 1.11.0 does not run on JDK25: "java.lang.reflect.InvocationTargetException"
+ if: false
steps:
- name: Checkout source
uses: actions/checkout@v6
@@ -139,7 +141,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Setup Gradle
@@ -265,7 +267,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Setup Gradle
@@ -301,7 +303,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Generate JBang cache key
@@ -350,7 +352,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Setup Gradle
@@ -400,7 +402,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Setup Gradle
@@ -532,7 +534,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Generate JBang cache key
@@ -602,7 +604,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
cache: maven
check-latest: true
@@ -678,7 +680,7 @@ jobs:
if: github.ref == 'refs/heads/main'
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Setup Gradle
@@ -724,7 +726,7 @@ jobs:
- name: Set up JDK
uses: actions/setup-java@v5
with:
- java-version: 24
+ java-version: 25
distribution: 'corretto'
check-latest: true
- name: Setup Gradle
diff --git a/.jbang/CheckoutPR.java b/.jbang/CheckoutPR.java
index 856fb56e88c..cb22de4fcd3 100755
--- a/.jbang/CheckoutPR.java
+++ b/.jbang/CheckoutPR.java
@@ -24,7 +24,7 @@
//DEPS org.eclipse.jgit:org.eclipse.jgit.pgm:7.4.0.202509020913-r
public class CheckoutPR {
- public static void main(String[] args) throws Exception {
+ static void main(String[] args) throws Exception {
GitHub github = new GitHubBuilder().build();
GHRepository repo = github.getRepository("JabRef/jabref");
diff --git a/.jbang/CloneJabRef.java b/.jbang/CloneJabRef.java
index 736008e1a0b..d9a379c2508 100755
--- a/.jbang/CloneJabRef.java
+++ b/.jbang/CloneJabRef.java
@@ -9,7 +9,7 @@
//DEPS org.eclipse.jgit:org.eclipse.jgit.pgm:7.4.0.202509020913-r
public class CloneJabRef {
- public static void main(String[] args) throws Exception {
+ static void main(String[] args) throws Exception {
Path targetDir;
if (args.length == 1) {
targetDir = Path.of(args[0]).toAbsolutePath();
diff --git a/.jbang/JabKitLauncher.java b/.jbang/JabKitLauncher.java
index bcfb1d9a1c8..d214d0b89b1 100755
--- a/.jbang/JabKitLauncher.java
+++ b/.jbang/JabKitLauncher.java
@@ -2,7 +2,7 @@
//DESCRIPTION jabkit - mange BibTeX files using JabRef
-//JAVA 24
+//JAVA 25
//RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED
// raw is for https://github.com/unicode-org/icu/pull/2127
diff --git a/.jbang/JabLsLauncher.java b/.jbang/JabLsLauncher.java
index af68b46b170..75fa2a3ecf0 100755
--- a/.jbang/JabLsLauncher.java
+++ b/.jbang/JabLsLauncher.java
@@ -2,7 +2,7 @@
//DESCRIPTION jabls - start a bibtex languageserver
-//JAVA 24
+//JAVA 25
//RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED
// raw is for https://github.com/unicode-org/icu/pull/2127
diff --git a/.jbang/JabSrvLauncher.java b/.jbang/JabSrvLauncher.java
index a35c96fa8b2..8d7c2c94735 100755
--- a/.jbang/JabSrvLauncher.java
+++ b/.jbang/JabSrvLauncher.java
@@ -2,7 +2,7 @@
//DESCRIPTION jabsrv - serve BibTeX files using JabRef
-//JAVA 24
+//JAVA 25
//RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED
// raw is for https://github.com/unicode-org/icu/pull/2127
diff --git a/.moderne/moderne.yml b/.moderne/moderne.yml
index 970c3c0479c..7159802fb6f 100644
--- a/.moderne/moderne.yml
+++ b/.moderne/moderne.yml
@@ -1,3 +1,3 @@
specs: specs.moderne.ai/v1/cli
java:
- selectedJdk: '24'
+ selectedJdk: '25'
diff --git a/.sdkmanrc b/.sdkmanrc
index d5223a11a4a..26ac25ebe80 100644
--- a/.sdkmanrc
+++ b/.sdkmanrc
@@ -1,2 +1,2 @@
-java=24.0.2-tem
+java=25-tem
#visualvm=2.1.10
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d24f266f783..857bc8c4095 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -38,6 +38,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
- We replaced the standard ComboBox with a SearchableComboBox and added a free text field in custom Entry Types [#14082](https://github.com/JabRef/jabref/issues/14082)
- We separated the "Clean up entries" dialog into three tabs for clarity [#13819](https://github.com/JabRef/jabref/issues/13819)
- `JabKit`: `--porcelain` does not output any logs to the console anymore. [#14244](https://github.com/JabRef/jabref/pull/14244)
+- macOS distributions now take "intel" and "silicon" as suffixes. [#14057](https://github.com/JabRef/jabref/pull/14057)
- Ctrl + Shift + L now opens the terminal in the active library directory. [#14130](https://github.com/JabRef/jabref/issues/14130)
- After importing, now all imported entries are marked. [#13535](https://github.com/JabRef/jabref/pull/13535)
- The URL integrity check now checks the complete URL syntax. [#14370](https://github.com/JabRef/jabref/pull/14370)
diff --git a/build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts b/build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
index 090f12509dc..09f112851b8 100644
--- a/build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
+++ b/build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
@@ -9,16 +9,17 @@ java {
// - jitpack.yml
// - .sdkmanrc
// - .devcontainer/devcontainer.json#L34 - there, also check if the gradleVersion matches the one of gradle/wrapper/gradle-wrapper.properties
- // - .moderne/moderne.yml
// - .github/workflows/binaries*.yml
// - .github/workflows/publish.yml
// - .github/workflows/tests*.yml
// - .github/workflows/update-gradle-wrapper.yml
// - .jbang/Jab*.java
+ // - .moderne/moderne.yml
+ // - build-support/src/main/java/*.java
// - docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md
// - jablib-examples/jbang/*.java
// - jablib-examples/maven3/*/pom.xml
- languageVersion = JavaLanguageVersion.of(24)
+ languageVersion = JavaLanguageVersion.of(25)
// See https://docs.gradle.org/current/javadoc/org/gradle/jvm/toolchain/JvmVendorSpec.html for a full list
// Temurin does not ship jmods, thus we need to use another JDK -- see https://github.com/actions/setup-java/issues/804
// We also need a JDK without JavaFX, because we patch JavaFX due to modularity issues
@@ -27,5 +28,5 @@ java {
}
tasks.withType().configureEach {
- options.release = 24
+ options.release = 25
}
diff --git a/build-support/src/main/java/CitationStyleCatalogGenerator.java b/build-support/src/main/java/CitationStyleCatalogGenerator.java
index cdccc34357a..04bd04a9902 100644
--- a/build-support/src/main/java/CitationStyleCatalogGenerator.java
+++ b/build-support/src/main/java/CitationStyleCatalogGenerator.java
@@ -1,4 +1,4 @@
-//JAVA 24
+//JAVA 25+
//RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED
//DEPS org.jspecify:jspecify:1.0.0
@@ -45,7 +45,7 @@ public class CitationStyleCatalogGenerator {
private static final Logger LOGGER = LoggerFactory.getLogger(CitationStyleCatalogGenerator.class);
- public static void main(String[] args) {
+ static void main(String[] args) {
generateCitationStyleCatalog();
}
diff --git a/build-support/src/main/java/JournalListMvGenerator.java b/build-support/src/main/java/JournalListMvGenerator.java
index 3d95f3cb7cc..96a17c9543a 100644
--- a/build-support/src/main/java/JournalListMvGenerator.java
+++ b/build-support/src/main/java/JournalListMvGenerator.java
@@ -1,4 +1,4 @@
-//JAVA 24
+//JAVA 25+
//RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED
//DEPS com.h2database:h2:2.4.240
@@ -48,7 +48,7 @@ public class JournalListMvGenerator {
private static final Logger LOGGER = LoggerFactory.getLogger(JournalListMvGenerator.class);
- public static void main(String[] args) throws IOException {
+ static void main(String[] args) throws IOException {
boolean verbose = (args.length == 1) && ("--verbose".equals(args[0]));
Path abbreviationsDirectory = Path.of("jablib", "src", "main", "abbrv.jabref.org", "journals");
diff --git a/build-support/src/main/java/LtwaListMvGenerator.java b/build-support/src/main/java/LtwaListMvGenerator.java
index ab7b6897146..9979277b68f 100644
--- a/build-support/src/main/java/LtwaListMvGenerator.java
+++ b/build-support/src/main/java/LtwaListMvGenerator.java
@@ -1,4 +1,4 @@
-//JAVA 24
+//JAVA 25+
//RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED
//DEPS com.h2database:h2:2.4.240
@@ -46,7 +46,7 @@ public class LtwaListMvGenerator {
private static final Logger LOGGER = LoggerFactory.getLogger(LtwaListMvGenerator.class);
- public static void main(String[] args) {
+ static void main(String[] args) {
try {
Path tempCsvFile = Path.of("jablib", "build", "tmp", "ltwa_20210702.csv");
if (!Files.exists(tempCsvFile)) {
diff --git a/docs/code-howtos/eventbus.md b/docs/code-howtos/eventbus.md
index b6a76fd9b0e..49c2dc3e1df 100644
--- a/docs/code-howtos/eventbus.md
+++ b/docs/code-howtos/eventbus.md
@@ -49,7 +49,7 @@ import com.google.common.eventbus.EventBus;
public class Main {
private static EventBus eventBus = new EventBus();
- public static void main(String[] args) {
+ static void main(String[] args) {
Main main = new Main();
Listener listener = new Listener();
eventBus.register(listener);
diff --git a/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md b/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md
index c83acd5434d..56a4257e143 100644
--- a/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md
+++ b/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md
@@ -33,13 +33,13 @@ Go to "File > Project Structure" or press Ctrl+Shift+

{% endfigure %}
-Click on "Project" on the left side. Then, select **temurin-24** as the project SDK (continue reading if this option is not available).
+Click on "Project" on the left side. Then, select **temurin-25** as the project SDK (continue reading if this option is not available).
{% figure caption:"Project Structure - Project SDK" %}

{% endfigure %}
-If you do not have the access to this JDK, download it by clicking on "Download JDK..." In the dialog that opens, select version 24, vendor "Eclipse Temurin (AdoptOpenJDK HotSpot)", and click "Download".
+If you do not have the access to this JDK, download it by clicking on "Download JDK..." In the dialog that opens, select version 25, vendor "Eclipse Temurin (AdoptOpenJDK HotSpot)", and click "Download".
{% figure caption:"Dropdown to select Download JDK" %}

diff --git a/jabgui/build.gradle.kts b/jabgui/build.gradle.kts
index a10967291cc..8ffe922a234 100644
--- a/jabgui/build.gradle.kts
+++ b/jabgui/build.gradle.kts
@@ -189,7 +189,7 @@ javaModulePackaging {
}
targetsWithOs("macos") {
options.addAll(
- "--icon", "$projectDir/src/main/resources/icons/jabref.icns",
+ "--icon", "$projectDir/buildres/macos/JabRef.icns",
"--mac-package-identifier", "JabRef",
"--mac-package-name", "JabRef",
"--file-associations", "$projectDir/buildres/macos/bibtexAssociations.properties",
@@ -198,7 +198,7 @@ javaModulePackaging {
options.addAll(
"--mac-sign",
"--mac-signing-key-user-name", "JabRef e.V. (6792V39SK3)",
- "--mac-package-signing-prefix", "org.jabref",
+ "--mac-package-signing-prefix", "org.jabref.",
)
}
targetResources.from(layout.projectDirectory.dir("buildres/macos").asFileTree.matching {
diff --git a/jabgui/buildres/macos/Info-lite.plist.template b/jabgui/buildres/macos/Info-lite.plist.template
deleted file mode 100644
index 509eb841ef9..00000000000
--- a/jabgui/buildres/macos/Info-lite.plist.template
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
- LSMinimumSystemVersion
- 10.9
- CFBundleDevelopmentRegion
- English
- CFBundleAllowMixedLocalizations
-
- CFBundleExecutable
- DEPLOY_LAUNCHER_NAME
- CFBundleIconFile
- DEPLOY_ICON_FILE
- CFBundleIdentifier
- DEPLOY_BUNDLE_IDENTIFIER
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- DEPLOY_BUNDLE_NAME
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- DEPLOY_BUNDLE_SHORT_VERSION
- CFBundleSignature
- ????
-
- LSApplicationCategoryType
- Unknown
- CFBundleVersion
- DEPLOY_BUNDLE_CFBUNDLE_VERSION
- NSHumanReadableCopyright
- DEPLOY_BUNDLE_COPYRIGHTDEPLOY_FILE_ASSOCIATIONS
- NSHighResolutionCapable
- true
- NSSupportsAutomaticGraphicsSwitching
-
-
-
diff --git a/jabgui/buildres/macos/Info.plist b/jabgui/buildres/macos/Info.plist
deleted file mode 100644
index 509eb841ef9..00000000000
--- a/jabgui/buildres/macos/Info.plist
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
- LSMinimumSystemVersion
- 10.9
- CFBundleDevelopmentRegion
- English
- CFBundleAllowMixedLocalizations
-
- CFBundleExecutable
- DEPLOY_LAUNCHER_NAME
- CFBundleIconFile
- DEPLOY_ICON_FILE
- CFBundleIdentifier
- DEPLOY_BUNDLE_IDENTIFIER
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- DEPLOY_BUNDLE_NAME
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- DEPLOY_BUNDLE_SHORT_VERSION
- CFBundleSignature
- ????
-
- LSApplicationCategoryType
- Unknown
- CFBundleVersion
- DEPLOY_BUNDLE_CFBUNDLE_VERSION
- NSHumanReadableCopyright
- DEPLOY_BUNDLE_COPYRIGHTDEPLOY_FILE_ASSOCIATIONS
- NSHighResolutionCapable
- true
- NSSupportsAutomaticGraphicsSwitching
-
-
-
diff --git a/jabgui/buildres/macos/Info.plist.template b/jabgui/buildres/macos/Info.plist.template
deleted file mode 100644
index 509eb841ef9..00000000000
--- a/jabgui/buildres/macos/Info.plist.template
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
- LSMinimumSystemVersion
- 10.9
- CFBundleDevelopmentRegion
- English
- CFBundleAllowMixedLocalizations
-
- CFBundleExecutable
- DEPLOY_LAUNCHER_NAME
- CFBundleIconFile
- DEPLOY_ICON_FILE
- CFBundleIdentifier
- DEPLOY_BUNDLE_IDENTIFIER
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- DEPLOY_BUNDLE_NAME
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- DEPLOY_BUNDLE_SHORT_VERSION
- CFBundleSignature
- ????
-
- LSApplicationCategoryType
- Unknown
- CFBundleVersion
- DEPLOY_BUNDLE_CFBUNDLE_VERSION
- NSHumanReadableCopyright
- DEPLOY_BUNDLE_COPYRIGHTDEPLOY_FILE_ASSOCIATIONS
- NSHighResolutionCapable
- true
- NSSupportsAutomaticGraphicsSwitching
-
-
-
diff --git a/jabgui/buildres/macos/Jabref-volume.icns b/jabgui/buildres/macos/JabRef.icns
similarity index 100%
rename from jabgui/buildres/macos/Jabref-volume.icns
rename to jabgui/buildres/macos/JabRef.icns
diff --git a/jabgui/buildres/macos/README.md b/jabgui/buildres/macos/README.md
index 495b5742d73..e297503263d 100644
--- a/jabgui/buildres/macos/README.md
+++ b/jabgui/buildres/macos/README.md
@@ -2,8 +2,9 @@
## Modifying DMG Setup scpt
-Rename `JabRef-dmg-setup.scpt script` to `JabRef-dmg-setup.applescript`.
-Only modify the `JabRef-dmg-setup.applescript` in the macOS Script Editor. Afterwards copy over the file and rename it to `JabRef-dmg-setup.scpt`.
+Rename `JabRef-dmg-setup.scpt` script to `JabRef-dmg-setup.applescript`.
+Only modify the `JabRef-dmg-setup.applescript` in the macOS Script Editor.
+Afterwards, copy over the file and rename it to `JabRef-dmg-setup.scpt`.
Normally the `scpt` file is a binary compiled variant and the `.applescript` the uncompiled format but jpackage expects the sctp in uncompiled format
## Generate iconsets
diff --git a/jabgui/buildres/macos/Runtime-Info.plist b/jabgui/buildres/macos/Runtime-Info.plist
deleted file mode 100644
index 76fb7eeb134..00000000000
--- a/jabgui/buildres/macos/Runtime-Info.plist
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- English
- CFBundleExecutable
- libjli.dylib
- CFBundleIdentifier
- CF_BUNDLE_IDENTIFIER
- CFBundleInfoDictionaryVersion
- 7.0
- CFBundleName
- CF_BUNDLE_NAME
- CFBundlePackageType
- BNDL
- CFBundleShortVersionString
- CF_BUNDLE_SHORT_VERSION_STRING
- CFBundleSignature
- ????
- CFBundleVersion
- CF_BUNDLE_VERSION
- NSSupportsAutomaticGraphicsSwitching
-
-
-
diff --git a/jabgui/buildres/macos/Runtime-Info.plist.template b/jabgui/buildres/macos/Runtime-Info.plist.template
deleted file mode 100644
index 76fb7eeb134..00000000000
--- a/jabgui/buildres/macos/Runtime-Info.plist.template
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- CFBundleDevelopmentRegion
- English
- CFBundleExecutable
- libjli.dylib
- CFBundleIdentifier
- CF_BUNDLE_IDENTIFIER
- CFBundleInfoDictionaryVersion
- 7.0
- CFBundleName
- CF_BUNDLE_NAME
- CFBundlePackageType
- BNDL
- CFBundleShortVersionString
- CF_BUNDLE_SHORT_VERSION_STRING
- CFBundleSignature
- ????
- CFBundleVersion
- CF_BUNDLE_VERSION
- NSSupportsAutomaticGraphicsSwitching
-
-
-
diff --git a/jabgui/buildres/macos/bibtexAssociations.properties b/jabgui/buildres/macos/bibtexAssociations.properties
index 9db815dbbb5..a0839863798 100644
--- a/jabgui/buildres/macos/bibtexAssociations.properties
+++ b/jabgui/buildres/macos/bibtexAssociations.properties
@@ -1,4 +1,3 @@
extension=bib
mime-type=text/x-bibtex
description=BibTeX File
-icon=jabref.icns
diff --git a/jabgui/buildres/macos/info-lite.plist b/jabgui/buildres/macos/info-lite.plist
deleted file mode 100644
index 509eb841ef9..00000000000
--- a/jabgui/buildres/macos/info-lite.plist
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
- LSMinimumSystemVersion
- 10.9
- CFBundleDevelopmentRegion
- English
- CFBundleAllowMixedLocalizations
-
- CFBundleExecutable
- DEPLOY_LAUNCHER_NAME
- CFBundleIconFile
- DEPLOY_ICON_FILE
- CFBundleIdentifier
- DEPLOY_BUNDLE_IDENTIFIER
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- DEPLOY_BUNDLE_NAME
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- DEPLOY_BUNDLE_SHORT_VERSION
- CFBundleSignature
- ????
-
- LSApplicationCategoryType
- Unknown
- CFBundleVersion
- DEPLOY_BUNDLE_CFBUNDLE_VERSION
- NSHumanReadableCopyright
- DEPLOY_BUNDLE_COPYRIGHTDEPLOY_FILE_ASSOCIATIONS
- NSHighResolutionCapable
- true
- NSSupportsAutomaticGraphicsSwitching
-
-
-
diff --git a/jabgui/buildres/macos/jabref.icns b/jabgui/buildres/macos/jabref.icns
deleted file mode 100644
index e231e8d3bad..00000000000
Binary files a/jabgui/buildres/macos/jabref.icns and /dev/null differ
diff --git a/jabgui/src/main/java/org/jabref/Launcher.java b/jabgui/src/main/java/org/jabref/Launcher.java
index 9ddf2443465..48fd458d757 100644
--- a/jabgui/src/main/java/org/jabref/Launcher.java
+++ b/jabgui/src/main/java/org/jabref/Launcher.java
@@ -49,7 +49,7 @@ public enum MultipleInstanceAction {
FOCUS
}
- public static void main(String[] args) {
+ static void main(String[] args) {
try {
initLogging(args);
diff --git a/jabgui/src/main/resources/icons/jabref.icns b/jabgui/src/main/resources/icons/jabref.icns
deleted file mode 100644
index e231e8d3bad..00000000000
Binary files a/jabgui/src/main/resources/icons/jabref.icns and /dev/null differ
diff --git a/jabgui/src/test/java/org/jabref/testutils/interactive/styletester/StyleTesterMain.java b/jabgui/src/test/java/org/jabref/testutils/interactive/styletester/StyleTesterMain.java
index c3a79927cba..ffaf6227125 100644
--- a/jabgui/src/test/java/org/jabref/testutils/interactive/styletester/StyleTesterMain.java
+++ b/jabgui/src/test/java/org/jabref/testutils/interactive/styletester/StyleTesterMain.java
@@ -15,7 +15,7 @@
*/
public class StyleTesterMain extends Application {
- public static void main(String[] args) {
+ static void main(String[] args) {
launch(args);
}
diff --git a/jabkit/src/main/java/org/jabref/toolkit/JabKitLauncher.java b/jabkit/src/main/java/org/jabref/toolkit/JabKitLauncher.java
index 59c4b3c9a97..bd8ef3197db 100644
--- a/jabkit/src/main/java/org/jabref/toolkit/JabKitLauncher.java
+++ b/jabkit/src/main/java/org/jabref/toolkit/JabKitLauncher.java
@@ -60,6 +60,8 @@ public class JabKitLauncher {
/// Note: To test with gradle, use jabkit -> Tasks -> application -> run
/// Use `--args="..."` as parameters to "Run"
+ ///
+ /// @implNote method needs to be public, because JabKitLauncher calls it.
public static void main(String[] args) {
initLogging(args);
diff --git a/jablib/src/jmh/java/org/jabref/benchmarks/Benchmarks.java b/jablib/src/jmh/java/org/jabref/benchmarks/Benchmarks.java
index db3c8e0f30a..208a2f6ba4b 100644
--- a/jablib/src/jmh/java/org/jabref/benchmarks/Benchmarks.java
+++ b/jablib/src/jmh/java/org/jabref/benchmarks/Benchmarks.java
@@ -145,7 +145,7 @@ public boolean keywordGroupContains() {
return group.containsAll(database.getEntries());
}
- public static void main(String[] args) throws IOException {
+ static void main(String[] args) throws IOException {
Main.main(args);
}
}
diff --git a/jabls-cli/src/main/java/org/jabref/languageserver/cli/ServerCli.java b/jabls-cli/src/main/java/org/jabref/languageserver/cli/ServerCli.java
index b1a7515d3db..b06c33ce082 100644
--- a/jabls-cli/src/main/java/org/jabref/languageserver/cli/ServerCli.java
+++ b/jabls-cli/src/main/java/org/jabref/languageserver/cli/ServerCli.java
@@ -19,6 +19,7 @@ public class ServerCli implements Callable {
@CommandLine.Option(names = {"-p", "--port"}, description = "the port")
private Integer port = 2087;
+ /// @implNote method needs to be public, because JabLsLauncher calls it.
public static void main(final String[] args) throws InterruptedException {
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
diff --git a/jabsrv-cli/src/main/java/org/jabref/http/server/cli/ServerCli.java b/jabsrv-cli/src/main/java/org/jabref/http/server/cli/ServerCli.java
index c43fb4fa8ff..694ba787e41 100644
--- a/jabsrv-cli/src/main/java/org/jabref/http/server/cli/ServerCli.java
+++ b/jabsrv-cli/src/main/java/org/jabref/http/server/cli/ServerCli.java
@@ -35,6 +35,8 @@ public class ServerCli implements Callable {
/**
* Starts an http server serving the last files opened in JabRef
* More files can be provided as args.
+ *
+ * @implNote method needs to be public, because JabServLauncher calls it.
*/
public static void main(final String[] args) throws InterruptedException {
SLF4JBridgeHandler.removeHandlersForRootLogger();
diff --git a/jitpack.yml b/jitpack.yml
index f42f228e421..ebdbf20b9ae 100644
--- a/jitpack.yml
+++ b/jitpack.yml
@@ -1,5 +1,5 @@
jdk:
- - openjdk24
+ - openjdk25
install:
- ./gradlew :versions:publishToMavenLocal
- ./gradlew :jablib:publishToMavenLocal
diff --git a/versions/build.gradle.kts b/versions/build.gradle.kts
index 57224be8ad3..f6ce30aa75b 100644
--- a/versions/build.gradle.kts
+++ b/versions/build.gradle.kts
@@ -14,6 +14,7 @@ val arch = DefaultNativePlatform.getCurrentArchitecture()
val javafx = if (os.isLinux && arch.name.equals("aarch64", ignoreCase = true)) "25" else "25.0.1"
val lucene = "10.3.2"
+
val pdfbox = "3.0.6"
dependencies {