Skip to content
This repository has been archived by the owner on Dec 15, 2022. It is now read-only.

No Java runtime found #93

Open
wendymungovan opened this issue Dec 20, 2018 · 8 comments
Open

No Java runtime found #93

wendymungovan opened this issue Dec 20, 2018 · 8 comments

Comments

@wendymungovan
Copy link

I just installed atom and ide-java on linux mint. No matter what I set the java home to for IDE-java I get a IDE-Java could not lanuch your java runtime. No java runtime found at:... error.

I've tried several things restarted, set the environment variable for JAVA_HOME (/usr/lib/jvm/java-11-openjdk-amd64), re-installed ide-java. java and javac work fine from the command line and atom just does not seem to be able to see it. The only thing in the console window is:
Uncaught (in promise) undefined ... server-manager.js line 5 over and over.

Any help you have would be great. Thank you.

@marcelovue
Copy link

I know its a little old, but I was having a similar issue, try to setup the bin folder of this JAVA_HOME inside your PATH variable. https://stackoverflow.com/questions/19013725/linux-mint-adding-environment-variables-permanently

@wendymungovan
Copy link
Author

Thanks - I'm still having the problem so I will take any help i can get. :)

$ more .pam_environment
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/
PATH DEFAULT=${PATH}:${JAVA_HOME}

and then restarted atom. I'm still having the same problem (i tried with and with out the bin folder specified).

I thought it might be a permissions problem but everyone has access to java and javac (same permissions not shown). Does atom run a nobody?

$ ls -la /usr/lib/jvm/java-11-openjdk-amd64/bin/java
-rwxr-xr-x 1 root root 10344 Nov 13 07:53 /usr/lib/jvm/java-11-openjdk-amd64/bin/java

@marcelovue
Copy link

JAVA_HOME variable is not supposed to have the /bin directory, I'm not sure about how u set ur system up, but I think it could be like so:

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
PATH DEFAULT=${JAVA_HOME}/bin

At least it is what we do in windows.

@wendymungovan
Copy link
Author

That still does not do it.

@LJacobsonMT
Copy link

I have the same issue using it on Fedora r31 Didn't found a solution yet.

@PVoola
Copy link

PVoola commented Jun 26, 2020

I've been facing the same issue on mac os - though the java path is set correctly, I still get "Error: Could not find or load main class'".

Appreciate if anyone can help me

@xenonwellz
Copy link

In your ide java configuration, remove the bin folder directory...
It should now look like something like this
C:\Program Filess\Java\jdk-11.0.8
Good luck...

@iracanyes
Copy link

Hi,
I've found that the error comes from the code of the module.
Even if the JAVA_HOME, JDK_HOME are set correctly in environment variable or settings in atom.
Ex: C:\path\to\openjdk\jdk-17.0.4.101-hotspot\
The module will throw an error if the command java -showversion cannot be parsed correctly

Ide-java access the java path with the follow code:

  getJavaPath () {
    return (new Array(
      atom.config.get('ide-java.javaHome'),
      process.env['JDK_HOME'],
      process.env['JAVA_HOME'])
    ).find(j => j)
  }

When Java path is set correctly following one of the 3 ways (in settings, or in environment variables of OS)
The module check for the version of java using a regex pattern for finding the version of Java.

  getJavaVersionFromOutput (output) {

    const match = output.match(/ version "(\d+(.\d+)?)(.\d+)?(_\d+)?(?:-\w+)?"/)
    return match != null && match.length > 0 ? Number(match[1]) : null
  }

The problem is that with the OpenJDK version 17.0.4.1, the regex will return null.

"openjdk version \"17.0.4.1\" 2022-08-12 OpenJDK Runtime Environment Temurin-17.0.4.1+1 (build 17.0.4.1+1) OpenJDK 64-Bit Server VM Temurin-17.0.4.1+1 (build 17.0.4.1+1, mixed mode, sharing)"

The code below returns null.

'openjdk version "17.0.4.1" 2022-08-12 OpenJDK Runtime Environment Temurin-17.0.4.1+1 (build 17.0.4.1+1) OpenJDK 64-Bit Server VM Temurin-17.0.4.1+1 (build 17.0.4.1+1, mixed mode, sharing)'.match(/ version "(\d+(.\d+)?)(.\d+)?(_\d+)?(?:-\w+)?"/)

The solution would be to adapt the regex pattern for all possible output version. The second sub-group starting from the last of the regex pattern (_\d+)? in my case is the one causing the error.
If the arrow base was intented, may be a solution like ((_\d+)?|(.\d+)?) would solve the problem. Or simply changing the arrow base to a dot, if the arrow base was unintended.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants