#2449 JDK 26 Gradle 9.6.1 and Library Updates (#2450)

* #2449 JDK 26 Gradle 9.6.1 and Library Updates
This commit is contained in:
Denny Sheirer
2026-08-01 08:25:57 -04:00
committed by GitHub
parent af5dbcfcdc
commit 80360029ef
8 changed files with 73 additions and 103 deletions

View File

@@ -22,10 +22,10 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set up JDK 25 - name: Set up JDK 26
uses: actions/setup-java@v3 uses: actions/setup-java@v3
with: with:
java-version: '25' java-version: '26'
distribution: 'liberica' distribution: 'liberica'
java-package: 'jdk+fx' java-package: 'jdk+fx'
- name: Build with Gradle - name: Build with Gradle

View File

@@ -15,10 +15,10 @@ jobs:
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set up JDK 25 - name: Set up JDK 26
uses: actions/setup-java@v3 uses: actions/setup-java@v3
with: with:
java-version: '25' java-version: '26'
distribution: 'liberica' distribution: 'liberica'
java-package: 'jdk+fx' java-package: 'jdk+fx'

2
.idea/misc.xml generated
View File

@@ -47,7 +47,7 @@
</value> </value>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_25_PREVIEW" project-jdk-name="zulu-25" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_26_PREVIEW" project-jdk-name="26" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>

View File

@@ -17,16 +17,18 @@
* **************************************************************************** * ****************************************************************************
*/ */
import org.beryx.runtime.RuntimeZipTask
import org.gradle.internal.jvm.Jvm
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
/** /**
* Instructions for building/compiling the sdrtrunk application. * Instructions for building/compiling the sdrtrunk application.
* *
* Prerequisites: * Prerequisites:
* Install and configure an OpenJDK version 22+ that includes the JavaFX modules (e.g. Bellsoft Liberica JDK) * Install and configure an OpenJDK version 26+ that includes the JavaFX modules (e.g. Bellsoft Liberica JDK)
* - Optional: install and configure Gradle 8.10+ * - Optional: install and configure Gradle 9.6+
* *
* Scenario 1: run the application via gradle command line from the source code root directory: * Scenario 1: run the application via gradle command line from the source code root directory:
* command: ./gradlew run * command: ./gradlew run
@@ -58,10 +60,10 @@ repositories {
//Version is defined in gradle.properties so that we can CLI override it for nightly builds. //Version is defined in gradle.properties so that we can CLI override it for nightly builds.
version = project.findProperty('projectVersion') version = project.findProperty('projectVersion')
//Java 24 is required for this version of the Project Panama preview/incubator feature //Java 26 is required for this version of the Project Panama preview/incubator feature
java { java {
toolchain { toolchain {
languageVersion = JavaLanguageVersion.of(25) languageVersion = JavaLanguageVersion.of(26)
vendor = JvmVendorSpec.BELLSOFT vendor = JvmVendorSpec.BELLSOFT
} }
} }
@@ -85,22 +87,22 @@ dependencies {
implementation 'com.github.nwaldispuehl:java-lame:v3.98.4' implementation 'com.github.nwaldispuehl:java-lame:v3.98.4'
//mavenCentral/jcenter imports //mavenCentral/jcenter imports
implementation 'ch.qos.logback:logback-classic:1.5.21' implementation 'ch.qos.logback:logback-classic:1.5.38'
implementation 'ch.qos.logback:logback-core:1.5.21' implementation 'ch.qos.logback:logback-core:1.5.38'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.20.1' implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.22.1'
implementation 'com.fazecast:jSerialComm:2.11.4' implementation 'com.fazecast:jSerialComm:2.11.4'
implementation 'com.formdev:flatlaf:3.5.4' implementation 'com.formdev:flatlaf:3.7.2'
implementation 'com.formdev:flatlaf-intellij-themes:3.5.4' implementation 'com.formdev:flatlaf-intellij-themes:3.7.2'
implementation 'com.github.jiconfont:jiconfont-font_awesome:4.7.0.1' implementation 'com.github.jiconfont:jiconfont-font_awesome:4.7.0.1'
implementation 'com.github.jiconfont:jiconfont-javafx:1.0.0' implementation 'com.github.jiconfont:jiconfont-javafx:1.0.0'
implementation 'com.github.jiconfont:jiconfont-swing:1.0.1' implementation 'com.github.jiconfont:jiconfont-swing:1.0.1'
implementation 'com.github.wendykierp:JTransforms:3.1' implementation 'com.github.wendykierp:JTransforms:3.2'
implementation 'com.google.code.gson:gson:2.13.2' implementation 'com.google.code.gson:gson:2.14.0'
implementation 'com.google.guava:guava:33.5.0-jre' implementation 'com.google.guava:guava:33.6.0-jre'
implementation 'com.jidesoft:jide-oss:3.6.18' implementation 'com.jidesoft:jide-oss:3.6.18'
implementation 'com.miglayout:miglayout-swing:11.4.2' implementation 'com.miglayout:miglayout-swing:11.4.3'
implementation 'com.mpatric:mp3agic:0.9.1' implementation 'com.mpatric:mp3agic:0.9.1'
implementation 'commons-io:commons-io:2.21.0' implementation 'commons-io:commons-io:2.22.0'
implementation 'eu.hansolo:charts:1.0.5' implementation 'eu.hansolo:charts:1.0.5'
implementation 'io.github.dsheirer:radio-reference-api:18.0.0' implementation 'io.github.dsheirer:radio-reference-api:18.0.0'
implementation 'io.github.dsheirer:usb4java-native-libraries:1.3.3' //OSX & Windows aarch64 native libs implementation 'io.github.dsheirer:usb4java-native-libraries:1.3.3' //OSX & Windows aarch64 native libs
@@ -108,12 +110,12 @@ dependencies {
implementation 'javax.usb:usb-api:1.0.2' implementation 'javax.usb:usb-api:1.0.2'
implementation 'net.coderazzi:tablefilter-swing:5.5.4' implementation 'net.coderazzi:tablefilter-swing:5.5.4'
implementation 'org.apache.commons:commons-compress:1.28.0' implementation 'org.apache.commons:commons-compress:1.28.0'
implementation 'org.apache.commons:commons-lang3:3.19.0' implementation 'org.apache.commons:commons-lang3:3.20.0'
implementation 'org.apache.commons:commons-math3:3.6.1' implementation 'org.apache.commons:commons-math3:3.6.1'
implementation 'org.apache.commons:commons-csv:1.14.1' implementation 'org.apache.commons:commons-csv:1.14.1'
implementation 'org.apache.mina:mina-core:2.2.4' implementation 'org.apache.mina:mina-core:2.2.9'
implementation 'org.apache.mina:mina-http:2.2.4' implementation 'org.apache.mina:mina-http:2.2.9'
implementation 'org.controlsfx:controlsfx:11.2.2' implementation 'org.controlsfx:controlsfx:11.2.3'
implementation 'org.rauschig:jarchivelib:1.2.0' implementation 'org.rauschig:jarchivelib:1.2.0'
implementation 'org.slf4j:slf4j-api:2.0.17' implementation 'org.slf4j:slf4j-api:2.0.17'
implementation 'org.usb4java:libusb4java:1.3.0' implementation 'org.usb4java:libusb4java:1.3.0'
@@ -121,12 +123,12 @@ dependencies {
implementation 'pl.edu.icm:JLargeArrays:1.6' implementation 'pl.edu.icm:JLargeArrays:1.6'
} }
def os = org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem def os = DefaultNativePlatform.currentOperatingSystem
/** /**
* This is needed for the JDK23 vector API ... until it moves out of incubation or preview * This is needed for the JDK23 vector API ... until it moves out of incubation or preview
*/ */
tasks.withType(JavaCompile) { tasks.withType(JavaCompile).configureEach {
options.compilerArgs.add("--enable-preview") //Project Panama Vector API is still in incubator options.compilerArgs.add("--enable-preview") //Project Panama Vector API is still in incubator
options.compilerArgs.add("--add-modules=jdk.incubator.vector") //Project Panama Vector API is still in incubator options.compilerArgs.add("--add-modules=jdk.incubator.vector") //Project Panama Vector API is still in incubator
} }
@@ -227,7 +229,7 @@ String jdk_windows_aarch64 = jdk_base + 'windows-arm64/jdk-25.0.1-full'
/** /**
* Download URLs to download the JDK as part of the gradle build packaging process * Download URLs to download the JDK as part of the gradle build packaging process
*/ */
def jdk_download_base = "https://download.bell-sw.com/java/25.0.1+11/bellsoft-jdk25.0.1+11-" def jdk_download_base = "https://download.bell-sw.com/java/26.0.2+13/bellsoft-jdk26.0.2+13-"
def jdk_download_suffix = "-full.tar.gz" def jdk_download_suffix = "-full.tar.gz"
def jdk_download_linux_aarch64 = jdk_download_base + "linux-aarch64" + jdk_download_suffix def jdk_download_linux_aarch64 = jdk_download_base + "linux-aarch64" + jdk_download_suffix
def jdk_download_linux_x86_64 = jdk_download_base + "linux-amd64" + jdk_download_suffix def jdk_download_linux_x86_64 = jdk_download_base + "linux-amd64" + jdk_download_suffix
@@ -242,7 +244,7 @@ def jdk_download_windows_aarch64 = jdk_download_base + "windows-aarch64-full.zip
* @param jvmArgs to use (windows or linux) * @param jvmArgs to use (windows or linux)
* @return configured task. * @return configured task.
*/ */
def configure(org.beryx.runtime.RuntimeZipTask rt, List<String> jvmArgs) { def configure(RuntimeZipTask rt, List<String> jvmArgs) {
//Use the correct set of JVM arguments //Use the correct set of JVM arguments
rt.extension.launcherData.get().jvmArgs = jvmArgs rt.extension.launcherData.get().jvmArgs = jvmArgs
@@ -261,7 +263,8 @@ def configure(org.beryx.runtime.RuntimeZipTask rt, List<String> jvmArgs) {
rt.extension.addOptions('--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages') rt.extension.addOptions('--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages')
//Runtime images have auto appended version in image zip name. Override to include version in single target image. //Runtime images have auto appended version in image zip name. Override to include version in single target image.
rt.extension.imageZip.set(file("$buildDir/image/sdr-trunk.zip")) // rt.extension.imageDir=layout.buildDirectory.dir('image')
rt.extension.imageZip.set(file(layout.buildDirectory.dir('image').get().file('sdr-trunk.zip')))
} }
/** /**
@@ -273,35 +276,35 @@ def configure(org.beryx.runtime.RuntimeZipTask rt, List<String> jvmArgs) {
* Usage: gradlew runtimeZipCurrent (windows - using gradlew) * Usage: gradlew runtimeZipCurrent (windows - using gradlew)
* Usage: ./gradlew runtimeZipCurrent (linux - using gradlew) * Usage: ./gradlew runtimeZipCurrent (linux - using gradlew)
*/ */
tasks.register('runtimeZipCurrent', org.beryx.runtime.RuntimeZipTask) {rt -> tasks.register('runtimeZipCurrent', RuntimeZipTask) {rt ->
def arch = System.properties.getProperty("os.arch") def arch = System.properties.getProperty("os.arch")
def javaHome = org.gradle.internal.jvm.Jvm.current().getJavaHome().toString() def javaHome = Jvm.current().getJavaHome().toString()
if(os.isWindows()) { if(os.isWindows()) {
if(arch.equals("amd64")) { if(arch == "amd64") {
rt.extension.targetPlatform(targetWindowsX86_64, javaHome) rt.extension.targetPlatform(targetWindowsX86_64, javaHome)
} }
else if(arch.equals("aarch64")) { else if(arch == "aarch64") {
rt.extension.targetPlatform(targetWindowsAarch64, javaHome) rt.extension.targetPlatform(targetWindowsAarch64, javaHome)
} }
configure(rt, jvmArgsWindows) configure(rt, jvmArgsWindows)
} }
else if(os.isLinux()) else if(os.isLinux())
{ {
if(arch.equals("amd64")) { if(arch == "amd64") {
rt.extension.targetPlatform(targetLinuxX86_64, javaHome) rt.extension.targetPlatform(targetLinuxX86_64, javaHome)
} }
else if(arch.equals("aarch64")) { else if(arch == "aarch64") {
rt.extension.targetPlatform(targetLinuxAarch64, javaHome) rt.extension.targetPlatform(targetLinuxAarch64, javaHome)
} }
configure(rt, jvmArgsLinux) configure(rt, jvmArgsLinux)
} }
else if(os.isMacOsX()) else if(os.isMacOsX())
{ {
if(arch.equals("amd64")) { if(arch == "amd64") {
rt.extension.targetPlatform(targetOsxX86_64, javaHome) rt.extension.targetPlatform(targetOsxX86_64, javaHome)
} }
else if(arch.equals("aarch64")) { else if(arch == "aarch64") {
rt.extension.targetPlatform(targetOsxAarch64, javaHome) rt.extension.targetPlatform(targetOsxAarch64, javaHome)
} }
configure(rt, jvmArgsLinux) configure(rt, jvmArgsLinux)
@@ -318,7 +321,7 @@ tasks.register('runtimeZipCurrent', org.beryx.runtime.RuntimeZipTask) {rt ->
* Usage: gradlew runtimeZipWindows (windows - using gradlew) * Usage: gradlew runtimeZipWindows (windows - using gradlew)
* Usage: ./gradlew runtimeZipWindows (linux - using gradlew) * Usage: ./gradlew runtimeZipWindows (linux - using gradlew)
*/ */
tasks.register('runtimeZipWindows', org.beryx.runtime.RuntimeZipTask) {rt -> tasks.register('runtimeZipWindows', RuntimeZipTask) {rt ->
//Windows aarch64 //Windows aarch64
if(file(jdk_windows_aarch64).exists()) { if(file(jdk_windows_aarch64).exists()) {
rt.extension.targetPlatform(targetWindowsAarch64, jdk_windows_aarch64, []) rt.extension.targetPlatform(targetWindowsAarch64, jdk_windows_aarch64, [])
@@ -350,7 +353,7 @@ tasks.register('runtimeZipWindows', org.beryx.runtime.RuntimeZipTask) {rt ->
* Usage: gradlew runtimeZipOthers (windows - using gradlew) * Usage: gradlew runtimeZipOthers (windows - using gradlew)
* Usage: ./gradlew runtimeZipOthers (linux - using gradlew) * Usage: ./gradlew runtimeZipOthers (linux - using gradlew)
*/ */
tasks.register('runtimeZipOthers', org.beryx.runtime.RuntimeZipTask) {rt -> tasks.register('runtimeZipOthers', RuntimeZipTask) {rt ->
//Linux aarch64 //Linux aarch64
if(file(jdk_linux_aarch64).exists()) { if(file(jdk_linux_aarch64).exists()) {
rt.extension.targetPlatform(targetLinuxAarch64, jdk_linux_aarch64, []) rt.extension.targetPlatform(targetLinuxAarch64, jdk_linux_aarch64, [])

Binary file not shown.

View File

@@ -1,26 +1,9 @@
#
# ******************************************************************************
# Copyright (C) 2014-2025 Dennis Sheirer
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
# *****************************************************************************
#
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip
networkTimeout=10000 networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

34
gradlew vendored
View File

@@ -1,27 +1,26 @@
#!/bin/sh #!/bin/sh
# #
# ****************************************************************************** # Copyright © 2015 the original authors.
# Copyright (C) 2014-2025 Dennis Sheirer
# #
# This program is free software: you can redistribute it and/or modify # Licensed under the Apache License, Version 2.0 (the "License");
# it under the terms of the GNU General Public License as published by # you may not use this file except in compliance with the License.
# the Free Software Foundation, either version 3 of the License, or # You may obtain a copy of the License at
# (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # https://www.apache.org/licenses/LICENSE-2.0
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # Unless required by applicable law or agreed to in writing, software
# along with this program. If not, see <http://www.gnu.org/licenses/> # distributed under the License is distributed on an "AS IS" BASIS,
# ***************************************************************************** # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
# #
############################################################################## ##############################################################################
# #
# Gradle start up script for POSIX generated by Gradle. # gradlew start up script for POSIX generated by Gradle.
# #
# Important for running: # Important for running:
# #
@@ -30,7 +29,7 @@
# bash, then to run this script, type that shell name before the whole # bash, then to run this script, type that shell name before the whole
# command line, like: # command line, like:
# #
# ksh Gradle # ksh gradlew
# #
# Busybox and similar reduced shells will NOT work, because this script # Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features: # requires all of these POSIX shell features:
@@ -58,7 +57,7 @@
# Darwin, MinGW, and NonStop. # Darwin, MinGW, and NonStop.
# #
# (3) This script is generated from the Groovy template # (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project. # within the Gradle project.
# #
# You can find Gradle at https://github.com/gradle/gradle/. # You can find Gradle at https://github.com/gradle/gradle/.
@@ -115,7 +114,6 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;; NONSTOP* ) nonstop=true ;;
esac esac
CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM. # Determine the Java command to use to start the JVM.
@@ -173,7 +171,6 @@ fi
# For Cygwin or MSYS, switch paths to Windows format before running java # For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" ) JAVACMD=$( cygpath --unix "$JAVACMD" )
@@ -213,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \ set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \ "-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@" "$@"

36
gradlew.bat vendored
View File

@@ -19,12 +19,12 @@
@if "%DEBUG%"=="" @echo off @if "%DEBUG%"=="" @echo off
@rem ########################################################################## @rem ##########################################################################
@rem @rem
@rem Gradle startup script for Windows @rem gradlew startup script for Windows
@rem @rem
@rem ########################################################################## @rem ##########################################################################
@rem Set local scope for the variables with windows NT shell @rem Set local scope for the variables, and ensure extensions are enabled
if "%OS%"=="Windows_NT" setlocal setlocal EnableExtensions
set DIRNAME=%~dp0 set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=. if "%DIRNAME%"=="" set DIRNAME=.
@@ -51,7 +51,7 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2 echo location of your Java installation. 1>&2
goto fail "%COMSPEC%" /c exit 1
:findJavaFromJavaHome :findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=% set JAVA_HOME=%JAVA_HOME:"=%
@@ -65,30 +65,18 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2 echo location of your Java installation. 1>&2
goto fail "%COMSPEC%" /c exit 1
:execute :execute
@rem Setup the command line @rem Setup the command line
set CLASSPATH=
@rem Execute Gradle @rem Execute gradlew
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* @rem endlocal doesn't take effect until after the line is parsed and variables are expanded
@rem which allows us to clear the local environment before executing the java command
endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel
:end :exitWithErrorLevel
@rem End local scope for the variables with windows NT shell @rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
if %ERRORLEVEL% equ 0 goto mainEnd "%COMSPEC%" /c exit %ERRORLEVEL%
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega