nativescript-cli icon indicating copy to clipboard operation
nativescript-cli copied to clipboard

OpenJDK 18 - JAVAC Fails this check

Open NathanaelA opened this issue 3 years ago • 2 comments

Issue Description

ns doctor or ns build android will fail on later versions of OpenJDK installations (basically failing to detect that it is installed, because the version check fails to get a number version). Giving you an error message about javac not installed or JAVA_HOME not being set.

This line has the failing regex.
https://github.com/NativeScript/nativescript-cli/blob/e44ca94cce733be5925988d07a8f99e0acc692c9/packages/doctor/src/sys-info.ts#L15

Replaced in my local copy with: SysInfo.JAVA_COMPILER_VERSION_REGEXP = /^javac (\d*)/im; Changed the (.*) to (\d*) meaning grab all numbers...

Reproduction

  1. Install Ubuntu 22.04,
  2. install OpenJDK 18,
  3. install NativeScript,
  4. run NS doctor

Relevant log output (if applicable)

No response

Environment

echo $JAVA_HOME -> /usr/lib/jvm/java-18-openjdk-amd64 javac -version -> javac 18-ea

OS: Linux 5.17 Pop!_OS 22.04 LTS Shell: /bin/bash node: 16.15.0 npm: 8.5.5 nativescript: 8.2.3

android

java: javac 18-ea ndk: Not Found apis: 23, 24, 25, 26, 27, 28, 29, 30, 31, 32 build_tools: 30.0.0, 30.0.3, 33.0.0, 33.0.0

Please accept these terms

NathanaelA avatar May 11 '22 23:05 NathanaelA

We have improvements to the doctor setup in the pipeline, however do note that Java 18 is not officially supported by gradle:

A Java version between 8 and 17 is required to execute Gradle. Java 18 and later versions are not yet supported.

Source: https://docs.gradle.org/current/userguide/compatibility.html

rigor789 avatar May 12 '22 10:05 rigor789

Yes, wasn't aware of that -- I also have some older versions of JDK/JRE installed which Gradle was automatically using. The only issue was NS itself as it runs the test using the latest and didn't understand the -ea as part of the version. ;-)

NathanaelA avatar May 12 '22 16:05 NathanaelA