reactiverse / es4x

🚀 fast JavaScript 4 Eclipse Vert.x
https://reactiverse.io/es4x/
Apache License 2.0
881 stars 75 forks source link

GraalVM 21 not recognized #603

Open 30atm opened 1 year ago

30atm commented 1 year ago

I have GraalVM for JDK 21 installed. It seems there is an issue with https://github.com/metaforte/es4x/blob/develop/pm/src/main/java/io/reactiverse/es4x/cli/GraalVMVersion.java

I tried to change the regular expression and I compiled the es4x-pm-0.20.0.jar locally and copied my local snapshot jar into my node_modules.

I still get an error when I run the postgres example

$npm start

ex4js-postgres@0.0.1 start es4x

Runtime GraalVM version mismatch { wanted: [22.3.2], provided: [21.35.1] } For installation help see: https://www.graalvm.org/docs/getting-started-with-graalvm/

$ java -version openjdk version "21" 2023-09-19 OpenJDK Runtime Environment GraalVM CE 21+35.1 (build 21+35-jvmci-23.1-b15) OpenJDK 64-Bit Server VM GraalVM CE 21+35.1 (build 21+35-jvmci-23.1-b15, mixed mode, sharing)

pmlopes commented 1 year ago

Graal 21 is causing tests to fail. This could also signify further problems.

30atm commented 1 year ago

I tried latest graal 17. same error Is it possible to consider setting a minimum version requirement instead of exact version?

java --version java 17.0.8 2023-07-18 LTS Java(TM) SE Runtime Environment Oracle GraalVM 17.0.8+9.1 (build 17.0.8+9-LTS-jvmci-23.0-b14) Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 17.0.8+9.1 (build 17.0.8+9-LTS-jvmci-23.0-b14, mixed mode, sharing)

cd es4jx-postgres/ npm start

ex4js-postgres@0.0.1 start es4x

Runtime GraalVM version mismatch { wanted: [22.3.2], provided: [0.0.0] } For installation help see: https://www.graalvm.org/docs/getting-started-with-graalvm/

30atm commented 12 months ago

I tried to add an else case

      m = p.matcher("".equals(VENDOR_VERSION) ? VM_NAME : VENDOR_VERSION);
      if (m.find()) {
        YEAR = Integer.parseInt(m.group(1));
        RELEASE = Integer.parseInt(m.group(2));
        BUGFIX = Integer.parseInt(m.group(3));
      } else {
        p = Pattern.compile("jvmci\\-(\\d+)\\.(\\d+)\\-b(\\d+)");
        m = p.matcher(System.getProperty("java.vm.version"));
        if (m.find()) {
          YEAR = Integer.parseInt(m.group(1));
          RELEASE = Integer.parseInt(m.group(2));
          BUGFIX = Integer.parseInt(m.group(3));
        } else {
          YEAR = 0;
          RELEASE = 0;
          BUGFIX = 0;
        }
      }
    } else {
      YEAR = 0;
      RELEASE = 0;
      BUGFIX = 0;
    }

Now I get a different error


T E S T S

Running io.reactiverse.es4x.impl.ImportMapperTest Can not find io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider in the classpath, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos' Tests run: 7, Failures: 0, Errors: 7, Skipped: 0, Time elapsed: 0.298 sec <<< FAILURE! testURI(io.reactiverse.es4x.impl.ImportMapperTest) Time elapsed: 0.255 sec <<< ERROR! java.lang.IllegalStateException: A language with id 'js' is not installed at io.reactiverse.es4x.ECMAEngine.(ECMAEngine.java:102)

.... After 20000 lines of stack trace .... Running io.reactiverse.es4x.ES4XTest Failed to create the vert.x instance caused by java.lang.IllegalStateException: A language with id 'js' is not installed at io.reactiverse.es4x.ECMAEngine.(ECMAEngine.java:102)

30atm commented 12 months ago

Read a bit in https://www.graalvm.org/latest/reference-manual/js/ScriptEngine/..

Seems like things changed. updating pom as per this page also did not help..