diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index cc2d1c9..d1afc33 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -7,7 +7,7 @@
     branches: ["*"]
 
 env:
-  BUILD_DEPS: automake bison flex g++ git libboost-all-dev libevent-dev libssl-dev libtool make pkg-config
+  BUILD_DEPS: automake bison flex git libboost-all-dev libevent-dev libssl-dev libtool make pkg-config
 
 jobs:
   # TODO windows and macos
@@ -22,7 +22,7 @@
       - name: Install dependencies
         run: |
           sudo apt-get update -yq
-          sudo apt-get install -y --no-install-recommends $BUILD_DEPS
+          sudo apt-get install -y --no-install-recommends g++ $BUILD_DEPS
 
       - name: Run bootstrap
         run: ./bootstrap.sh
@@ -131,11 +131,104 @@
       - name: Run make for java
         run: make -C lib/java
 
+      - name: Run make install for java
+        run: make -C lib/java install
+
+      - name: Upload java libthrift artifacts
+        uses: actions/upload-artifact@v3
+        with:
+          name: libthrift
+          if-no-files-found: error
+          path: ~/.m2/repository/org/apache/thrift
+
       - name: Run make check for java
         run: make -C lib/java check
 
+      - name: Run make precross for java
+        run: make -C lib/java precross
+
+      - name: Upload java precross artifacts
+        uses: actions/upload-artifact@v3
+        with:
+          name: java-precross
+          if-no-files-found: error
+          path: |
+            lib/java/build/functionalTestJar/
+            lib/java/build/runclient
+            lib/java/build/runnonblockingserver
+            lib/java/build/runserver
+            lib/java/build/runservletserver
+          retention-days: 3
+
       - name: Run make for kotlin
         run: make -C lib/kotlin
 
       - name: Run make check for kotlin
         run: make -C lib/kotlin check
+
+      - name: Run make precross for kotlin
+        run: make -C lib/kotlin precross
+
+      - name: Upload kotlin precross artifacts
+        uses: actions/upload-artifact@v3
+        with:
+          name: kotlin-precross
+          if-no-files-found: error
+          path: |
+            lib/kotlin/cross-test-client/build/install/TestClient/
+            lib/kotlin/cross-test-server/build/install/TestServer/
+          retention-days: 3
+
+  cross-test:
+    needs:
+      - lib-java-kotlin
+    runs-on: ubuntu-20.04
+    steps:
+      - uses: actions/checkout@v3
+      - uses: actions/setup-python@v3
+        with:
+          python-version: "3.x"
+      - uses: actions/setup-java@v3
+        with:
+          distribution: temurin
+          # here we intentionally use java 8 so that we also verify java 11 compiles to version 8
+          java-version: 8
+          cache: "gradle"
+
+      - name: Download java precross artifacts
+        uses: actions/download-artifact@v3
+        with:
+          name: java-precross
+          path: lib/java/build
+
+      - name: Download kotlin precross artifacts
+        uses: actions/download-artifact@v3
+        with:
+          name: kotlin-precross
+          path: lib/kotlin
+
+      - name: Set back executable flags
+        run: |
+          chmod a+x \
+            lib/java/build/run* \
+            lib/kotlin/cross-test-client/build/install/TestClient/bin/* \
+            lib/kotlin/cross-test-server/build/install/TestServer/bin/*
+
+      - name: Run cross test
+        env:
+          THRIFT_CROSSTEST_CONCURRENCY: 4
+          PRECROSS_LANGS: java,kotlin
+        run: |
+          python test/test.py \
+            --retry-count 5 \
+            --skip-known-failures \
+            --server $PRECROSS_LANGS \
+            --client $PRECROSS_LANGS
+
+      - name: Upload log files from failed cross test runs
+        uses: actions/upload-artifact@v3
+        if: failure()
+        with:
+          name: cross-test-log
+          path: test/log/
+          retention-days: 3
diff --git a/lib/kotlin/build.gradle.kts b/lib/kotlin/build.gradle.kts
index 842c1b9..1f7711a 100644
--- a/lib/kotlin/build.gradle.kts
+++ b/lib/kotlin/build.gradle.kts
@@ -34,6 +34,12 @@
     testImplementation(kotlin("test"))
 }
 
+kotlin {
+    jvmToolchain {
+        (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(8))
+    }
+}
+
 tasks {
     ktfmt {
         kotlinLangStyle()
diff --git a/lib/kotlin/cross-test-client/build.gradle.kts b/lib/kotlin/cross-test-client/build.gradle.kts
index 92b451a..deda467 100644
--- a/lib/kotlin/cross-test-client/build.gradle.kts
+++ b/lib/kotlin/cross-test-client/build.gradle.kts
@@ -50,6 +50,12 @@
     testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
 }
 
+kotlin {
+    jvmToolchain {
+        (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(8))
+    }
+}
+
 tasks {
     application {
         applicationName = "TestClient"
diff --git a/lib/kotlin/cross-test-server/build.gradle.kts b/lib/kotlin/cross-test-server/build.gradle.kts
index 7a0c48b..508b29d 100644
--- a/lib/kotlin/cross-test-server/build.gradle.kts
+++ b/lib/kotlin/cross-test-server/build.gradle.kts
@@ -48,6 +48,12 @@
     testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
 }
 
+kotlin {
+    jvmToolchain {
+        (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(8))
+    }
+}
+
 tasks {
     application {
         applicationName = "TestServer"
diff --git a/test/test.py b/test/test.py
index f59256a..cd5c4d4 100755
--- a/test/test.py
+++ b/test/test.py
@@ -121,7 +121,7 @@
         return False
 
 
-def default_concurrenty():
+def default_concurrency():
     try:
         return int(os.environ.get('THRIFT_CROSSTEST_CONCURRENCY'))
     except (TypeError, ValueError):
@@ -145,7 +145,7 @@
     parser.add_argument('-r', '--retry-count', type=int,
                         default=0, help='maximum retry on failure')
     parser.add_argument('-j', '--jobs', type=int,
-                        default=default_concurrenty(),
+                        default=default_concurrency(),
                         help='number of concurrent test executions')
 
     g = parser.add_argument_group(title='Advanced')
