Skip to content

Commit 6e26111

Browse files
sampottingerclaude
andcommitted
Move to JDK 25 and Gradle 9.8.1
Gradle 8.12 cannot read Java 25 class files (major version 69), so the build failed at script compilation. Upgrade the wrapper to 9.8.1, bump Mockito to 5.24.0 for a Byte Buddy that supports Java 25, and order warUnversioned after fatJar to satisfy Gradle 9 task validation. Update CI, Dockerfile and docs to JDK 25. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TQYQFuCCtK2eoeXYYK5L4P
1 parent 3c75e46 commit 6e26111

8 files changed

Lines changed: 37 additions & 36 deletions

File tree

‎.github/workflows/build.yaml‎

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ jobs:
5353
git checkout ${{ github.sha }}
5454
- name: Setup Java
5555
run: |
56-
echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
57-
echo "$JAVA_HOME_21_X64/bin" >> $GITHUB_PATH
56+
echo "JAVA_HOME=$JAVA_HOME_25_X64" >> $GITHUB_ENV
57+
echo "$JAVA_HOME_25_X64/bin" >> $GITHUB_PATH
5858
- name: Setup pnpm
5959
run: npm install -g pnpm@10.20.0
6060
- name: Install node deps
@@ -87,8 +87,8 @@ jobs:
8787
git checkout ${{ github.sha }}
8888
- name: Setup Java
8989
run: |
90-
echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
91-
echo "$JAVA_HOME_21_X64/bin" >> $GITHUB_PATH
90+
echo "JAVA_HOME=$JAVA_HOME_25_X64" >> $GITHUB_ENV
91+
echo "$JAVA_HOME_25_X64/bin" >> $GITHUB_PATH
9292
- name: Build fat jar
9393
run: ./gradlew fatJar
9494
- name: Install sshpass
@@ -119,8 +119,8 @@ jobs:
119119
git checkout ${{ github.sha }}
120120
- name: Setup Java
121121
run: |
122-
echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
123-
echo "$JAVA_HOME_21_X64/bin" >> $GITHUB_PATH
122+
echo "JAVA_HOME=$JAVA_HOME_25_X64" >> $GITHUB_ENV
123+
echo "$JAVA_HOME_25_X64/bin" >> $GITHUB_PATH
124124
- name: Check grammar
125125
run: ./gradlew generateGrammarSource
126126
- name: Check main style
@@ -143,8 +143,8 @@ jobs:
143143
git checkout ${{ github.sha }}
144144
- name: Setup Java
145145
run: |
146-
echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
147-
echo "$JAVA_HOME_21_X64/bin" >> $GITHUB_PATH
146+
echo "JAVA_HOME=$JAVA_HOME_25_X64" >> $GITHUB_ENV
147+
echo "$JAVA_HOME_25_X64/bin" >> $GITHUB_PATH
148148
- name: Run tests
149149
run: ./gradlew test
150150
runEngineLocal:
@@ -163,8 +163,8 @@ jobs:
163163
git checkout ${{ github.sha }}
164164
- name: Setup Java
165165
run: |
166-
echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
167-
echo "$JAVA_HOME_21_X64/bin" >> $GITHUB_PATH
166+
echo "JAVA_HOME=$JAVA_HOME_25_X64" >> $GITHUB_ENV
167+
echo "$JAVA_HOME_25_X64/bin" >> $GITHUB_PATH
168168
- name: Download fatJar
169169
run: |
170170
mkdir -p build/libs
@@ -201,8 +201,8 @@ jobs:
201201
git checkout ${{ github.sha }}
202202
- name: Setup Java
203203
run: |
204-
echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
205-
echo "$JAVA_HOME_21_X64/bin" >> $GITHUB_PATH
204+
echo "JAVA_HOME=$JAVA_HOME_25_X64" >> $GITHUB_ENV
205+
echo "$JAVA_HOME_25_X64/bin" >> $GITHUB_PATH
206206
- name: Download fatJar
207207
run: |
208208
mkdir -p build/libs
@@ -242,8 +242,8 @@ jobs:
242242
git checkout ${{ github.sha }}
243243
- name: Setup Java
244244
run: |
245-
echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
246-
echo "$JAVA_HOME_21_X64/bin" >> $GITHUB_PATH
245+
echo "JAVA_HOME=$JAVA_HOME_25_X64" >> $GITHUB_ENV
246+
echo "$JAVA_HOME_25_X64/bin" >> $GITHUB_PATH
247247
- name: Build war
248248
run: ./gradlew warUnversioned
249249
- name: Install sshpass
@@ -269,8 +269,8 @@ jobs:
269269
git checkout ${{ github.sha }}
270270
- name: Setup Java
271271
run: |
272-
echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
273-
echo "$JAVA_HOME_21_X64/bin" >> $GITHUB_PATH
272+
echo "JAVA_HOME=$JAVA_HOME_25_X64" >> $GITHUB_ENV
273+
echo "$JAVA_HOME_25_X64/bin" >> $GITHUB_PATH
274274
- name: Setup pnpm
275275
run: npm install -g pnpm@10.20.0
276276
- name: Download war
@@ -307,8 +307,8 @@ jobs:
307307
git checkout ${{ github.sha }}
308308
- name: Setup Java
309309
run: |
310-
echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
311-
echo "$JAVA_HOME_21_X64/bin" >> $GITHUB_PATH
310+
echo "JAVA_HOME=$JAVA_HOME_25_X64" >> $GITHUB_ENV
311+
echo "$JAVA_HOME_25_X64/bin" >> $GITHUB_PATH
312312
- name: Generate Javadoc
313313
run: ./gradlew javadoc
314314
- name: Install sshpass
@@ -419,8 +419,8 @@ jobs:
419419
git checkout ${{ github.sha }}
420420
- name: Setup Java
421421
run: |
422-
echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
423-
echo "$JAVA_HOME_21_X64/bin" >> $GITHUB_PATH
422+
echo "JAVA_HOME=$JAVA_HOME_25_X64" >> $GITHUB_ENV
423+
echo "$JAVA_HOME_25_X64/bin" >> $GITHUB_PATH
424424
- name: Setup pnpm
425425
run: npm install -g pnpm@10.20.0
426426
- name: Install SSH client and sshpass
@@ -605,8 +605,8 @@ jobs:
605605
git checkout ${{ github.sha }}
606606
- name: Setup Java
607607
run: |
608-
echo "JAVA_HOME=$JAVA_HOME_21_X64" >> $GITHUB_ENV
609-
echo "$JAVA_HOME_21_X64/bin" >> $GITHUB_PATH
608+
echo "JAVA_HOME=$JAVA_HOME_25_X64" >> $GITHUB_ENV
609+
echo "$JAVA_HOME_25_X64/bin" >> $GITHUB_PATH
610610
- name: Publish
611611
env:
612612
USERNAME: ${{ github.actor }}

‎CONTRIBUTING.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ Please reach out if you have further questions about these guidelines or want to
104104
## Scope
105105
There are some limitations of scope for this project:
106106

107-
- The Java engine must remain compatible with Java 21+ to support TeaVM compilation to WebAssembly but earlier versions are not guaranteed to be supported.
107+
- The Java engine must remain compatible with Java 25+ to support TeaVM compilation to WebAssembly but earlier versions are not guaranteed to be supported.
108108
- Breaking changes to the QubecTalk language syntax should be discussed in an issue before implementation and require community input.
109109
- We must maintain both the browser-based application and standalone JAR/Docker execution paths but other execution modalities are currently out of scope.
110110
- Energy consumption can be modeled but energy mix for secondary emissions is currently considered out of scope.

‎DEVELOPING.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Kigali Sim is organized into three main components and most have additional READ
1212

1313
The **Java Engine** (`engine` directory) provides the primary computational mechanism for running simulations. There are different entrypoints depending on how Kiglai Sim is running like via WASM or JVM. That said, developers may wish to review the [Engine JavaDoc](https://kigalisim.org/guide/javadoc/org/kigalisim/engine/Engine.html). The **ECMAScript Editor** (`editor` directory) may be explored via the [Editor JSDoc](https://kigalisim.org/guide/jsdoc/). At a glance:
1414

15-
- Core simulation engine built with Java 21+
15+
- Core simulation engine built with Java 25+
1616
- Uses ANTLR4 for parsing the QubecTalk domain specific language (DSL)
1717
- Contains the authoritative QubecTalk.g4 grammar file
1818
- Compiled to WebAssembly using TeaVM for browser execution
@@ -37,7 +37,7 @@ Both dev containers and local setup are supported, per developer preference.
3737

3838
The project includes a dev container which is compatible with IntelliJ, VS Code, and GitHub Codespaces. As described in `.devcontainer`, this provides a reproducible development environment with dependencies required for most development activities pre-installed. Indeed, this guide was written from a dev container! It uses:
3939

40-
- Debian 12 (bookworm-slim) with Eclipse Temurin JDK 21
40+
- Debian 12 (bookworm-slim) with Eclipse Temurin JDK 25
4141
- Node.js 18.x LTS (official Debian package)
4242
- pnpm 10.20.0 (installed via npm)
4343
- Chromium browser (official Debian package) for running tests
@@ -56,7 +56,7 @@ The container configuration prioritizes security by using only official package
5656
### Local Setup
5757
You are very welcome to set up your own environment outside of a pre-prepared container. You will need the following:
5858

59-
- Java JDK 21 or higher (please use only OpenJDK or similar, see [Adoptium](https://adoptium.net/))
59+
- Java JDK 25 or higher (please use only OpenJDK or similar, see [Adoptium](https://adoptium.net/))
6060
- Node.js 18.x and pnpm
6161
- Python 3.x (for local development server)
6262

‎Dockerfile‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# Use Eclipse Temurin JDK 21 as base image
2-
FROM eclipse-temurin:21-jre
1+
# Use Eclipse Temurin JDK 25 as base image
2+
FROM eclipse-temurin:25-jre
33

44
# Install wget for downloading the jar file
55
RUN apt-get update && apt-get install -y wget

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Kigali Sim
22
Open source engine for simulating substances, applications, and policies relevant to the Montreal Protocol and the Kigali Amendment.
33

4-
[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) [![BSD Licensed](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) [![Build](https://github.com/SchmidtDSE/kigali-sim/actions/workflows/build.yaml/badge.svg?branch=deploy)](https://github.com/SchmidtDSE/kigali-sim/actions/workflows/build.yaml) ![Temurin 21 or higher](https://img.shields.io/badge/Java-Temurin%2021%2B-blue) [![status](https://joss.theoj.org/papers/eafc95ac66aae284563f36fa60f0261d/status.svg)](https://joss.theoj.org/papers/eafc95ac66aae284563f36fa60f0261d)
4+
[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) [![BSD Licensed](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) [![Build](https://github.com/SchmidtDSE/kigali-sim/actions/workflows/build.yaml/badge.svg?branch=deploy)](https://github.com/SchmidtDSE/kigali-sim/actions/workflows/build.yaml) ![Temurin 25 or higher](https://img.shields.io/badge/Java-Temurin%2025%2B-blue) [![status](https://joss.theoj.org/papers/eafc95ac66aae284563f36fa60f0261d/status.svg)](https://joss.theoj.org/papers/eafc95ac66aae284563f36fa60f0261d)
55

66
<br>
77

‎engine/.idea/misc.xml‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎engine/build.gradle‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ eclipse {
2525
}
2626

2727
java {
28-
sourceCompatibility = JavaVersion.VERSION_21
29-
targetCompatibility = JavaVersion.VERSION_21
28+
sourceCompatibility = JavaVersion.VERSION_25
29+
targetCompatibility = JavaVersion.VERSION_25
3030
}
3131

3232
repositories {
@@ -48,8 +48,8 @@ dependencies {
4848
// Testing dependencies
4949
testImplementation(platform("org.junit:junit-bom:5.12.1"))
5050
testImplementation("org.junit.jupiter:junit-jupiter")
51-
testImplementation("org.mockito:mockito-core:5.16.1")
52-
testImplementation("org.mockito:mockito-junit-jupiter:5.16.1")
51+
testImplementation("org.mockito:mockito-core:5.24.0")
52+
testImplementation("org.mockito:mockito-junit-jupiter:5.24.0")
5353
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
5454

5555
// Command line parsing
@@ -142,6 +142,7 @@ task fatJar(type: Copy) {
142142
// War unversioned
143143
task warUnversioned(type: Copy) {
144144
dependsOn war
145+
mustRunAfter fatJar
145146
from war.archiveFile
146147
into file("${buildDir}/libs")
147148
rename { "KigaliSim.war" }
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#Sun Jun 15 16:17:00 UTC 2025
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
5-
distributionSha256Sum=7a00d51fb93147819aab76024feece20b6b84e420694101f276be952e08bef03
4+
distributionSha256Sum=dce76f55f8e251a3a1f130eb120f30b3d271de2b76c9b0729d316b5a1b6dc01f
5+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.1-bin.zip
66
zipStoreBase=GRADLE_USER_HOME
77
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)