From 90545eda6ad86a14f58035e2835bc4ef9678e650 Mon Sep 17 00:00:00 2001 From: Muhammad Hammad Date: Mon, 21 Oct 2024 21:57:45 +0200 Subject: [PATCH] Java 21 --- .github/workflows/maven.yml | 2 +- .../dynamic/compiler/DynamicCompiler.java | 34 +++++++++++++------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 9cbd1d4..4f57bf9 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: [ 8, 11, 17 ] + java: [ 8, 11, 17, 21 ] steps: - uses: actions/checkout@v4 - name: Setup java diff --git a/src/main/java/org/dvare/dynamic/compiler/DynamicCompiler.java b/src/main/java/org/dvare/dynamic/compiler/DynamicCompiler.java index a3dda7e..b6bdfb4 100644 --- a/src/main/java/org/dvare/dynamic/compiler/DynamicCompiler.java +++ b/src/main/java/org/dvare/dynamic/compiler/DynamicCompiler.java @@ -142,6 +142,15 @@ public void addCompilerOption(DynamicCompilerOption compilerOption, String compi options.add(compilerOptionVaule); } + public static boolean isJava9OrAbove() { + String version = System.getProperty("java.version"); + if (version.startsWith("1.8")) { + return false; + } + int majorVersion = Integer.parseInt(version.split("\\.")[0]); + return majorVersion >= 9; + } + public Map> build() throws DynamicCompilerException { errors.clear(); @@ -153,17 +162,9 @@ public Map> build() throws DynamicCompilerException { } try { - Class.forName("com.sun.tools.sjavac.Module"); - options.add(DynamicCompilerOption.ADD_EXPORTS.toString()); - options.add("java.base/java.lang=ALL-UNNAMED"); - options.add(DynamicCompilerOption.ADD_EXPORTS.toString()); - options.add("java.base/java.util=ALL-UNNAMED"); - options.add(DynamicCompilerOption.ADD_EXPORTS.toString()); - options.add("java.base/java.io=ALL-UNNAMED"); - options.add(DynamicCompilerOption.ADD_EXPORTS.toString()); - options.add("java.base/java.net=ALL-UNNAMED"); - - + if (isJava9OrAbove()) { + importBaseModule(); + } } catch (Exception ignored) { } @@ -213,6 +214,17 @@ public Map> build() throws DynamicCompilerException { } + private void importBaseModule() { + options.add(DynamicCompilerOption.ADD_EXPORTS.toString()); + options.add("java.base/java.lang=ALL-UNNAMED"); + options.add(DynamicCompilerOption.ADD_EXPORTS.toString()); + options.add("java.base/java.util=ALL-UNNAMED"); + options.add(DynamicCompilerOption.ADD_EXPORTS.toString()); + options.add("java.base/java.io=ALL-UNNAMED"); + options.add(DynamicCompilerOption.ADD_EXPORTS.toString()); + options.add("java.base/java.net=ALL-UNNAMED"); + } + private List diagnosticToString(List> diagnostics) {