JDK is installed on mac but i'm getting "The operation couldn’t be completed. Unable to locate a Java Runtime that supports apt." sudo apt update
Asked Answered
B

5

40

I'm trying to run the command sudo apt update on my terminal in MacOS

I'm getting this message in response: The operation couldn’t be completed. Unable to locate a Java Runtime that supports apt. Please visit http://www.java.com for information on installing Java.

I saw a similar question here, however even though I made sure to install the JDK like the solution suggested I'm still getting the same response.

I also tried pasting

export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
export JAVA_HOME="$HOME/.jenv/versions/`jenv version-name`"

Into my .zshrc.save folder and had no luck.

When I run java -version in the terminal this is what I get back:

java version "15.0.2" 2021-01-19
Java(TM) SE Runtime Environment (build 15.0.2+7-27)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.2+7-27, mixed mode, sharing)
Blunger answered 18/2, 2021 at 20:9 Comment(2)
Maybe it is getting confused with the old path of jdk. Did you delete the old the jdk or at least removed it from the path and JAVA_HOME.Mohammadmohammed
For clarity, a comment on a now-deleted answer shows that OP is trying to follow phoenixnap.com/kb/update-node-js-version which is a guide for linux, and the apt they mention is referring to debian/ubuntu package manager, not java's annotation processing tool.Fazio
F
88

20 years ago, java shipped with a tool called apt: Annotation Processor Tool. This tool was obsolete not much later.

What that update-node-js-version is talking about, is a completely and totally unrelated tool: It's the Advanced Package Tool, which is a tool to manage installations on debian and ubuntu - linux distros. You do not want to run this on a mac, and the instructions you found are therefore completely useless: That is how to update node-js on linux. Your machine isn't linux.

Search around for answers involving brew, which is the go-to equivalent of apt on mac. And completely forget about java - this has NOTHING to do with java - that was just a pure coincidence.

Fazio answered 18/2, 2021 at 20:21 Comment(13)
Thanks! That makes so much more sense now. For reference to anybody who didn't see earlier I was trying to follow this tutorial: phoenixnap.com/kb/update-node-js-versionBlunger
How do we use brew to do it instead of sudo apt?Eucalyptus
The question does not mention what 'it' is, @FranciscoGutierrezRamirezFazio
This is the answer I needed - was trying to use sudo apt install certbot stupidly and needed to use brew install certbot instead. Even Java can't name their stuff properly 🤦‍♂️Ayana
@ErmiyaEskandary I don't think the debian team gets to just claim a 3-letter acronym. It was apple and linux distributions that decided to pile every tool in a JDK's bin dir into your path which was never the intended design. Tragic, nobody is to blame for any of this however.Fazio
@Fazio Agreed but these days, anyone saying apt will probably only think of the package manager, not the Java apt toolAyana
@ErmiyaEskandary That was true when oracle added 'apt' to the bin dir of OpenJDK distros too, but there are ~50 executables in there and we just do not name executables e.g. org.openjdk.java-compiler-v16. We name them javac. That's not OpenJDK's choosing. They didn't mess up this name. Nobody is individually 'at fault'.Fazio
...uh...folks...all of the above and everything else here makes good sense. But maybe someone can explain how THIS fits into it all: formulae.brew.sh/formula/aptVariola
ugh thank you for this context!! this is exactly what i needed to knowHorsefaced
@Variola apt is an executable that does things. Specifically, it lets you interact with apt repositories. On its own it is useless unless you add apt repo sources. On linux, it ships out of the box with useful repo sources pre-configured. apt repo sources exist with packages ready to install on e.g. debian linux distributions. brew install apt installs the tool. This is a completely useless tool without a repo. Sometimes folks make their own apt repos (it's open source after all). brew install apt is always entirely useless.Fazio
@Fazio - I don't understand the point of your response to me. I know exactly what "apt" is on a Debian-style Linux host, and I know that it is useless without its package repos. I was asking what the purpose of the "apt" tool is that exists in Brew...that is, is there an appropriate use for this tool on a Mac? Maybe I could have made my question clearer. Telling me that it is completely useless doesn't answer my question as to why there is a build of the tool in Brew.Variola
hmm, unfortunate typo, I meant to write 'almost entirely useless'. It's useful if you want to write and maintain your own mini apt repos. Hence the second-to-last-line: "Sometimes folks make their own apt repos".Fazio
OMG, I was so confused why the thing I was trying to do was talking about java... thanks so much for this answer.Maintenance
M
5

Install Homebrew on your Mac Machine

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

For the system Java wrappers to find this JDK, symlink it with

sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

If you need to have openjdk first in your PATH, run:

echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> ~/.profile

For compilers to find openjdk you may need to set:

 export CPPFLAGS="-I/usr/local/opt/openjdk/include"
Mcavoy answered 9/10, 2021 at 6:29 Comment(0)
A
1

The below commands worked for me.

First, install the homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Then set the Android Studio Java path to the Home(If you have Android Studio). If not then you take the respective Java path & export it to the JAVA Home path.

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/Contents/Home

Aggress answered 28/6, 2022 at 10:38 Comment(0)
S
0

If anyone gets this using Expo React Native from an update the answer is in their docs

Specifically

brew install --cask zulu@17

# Get path to where cask was installed to double-click installer
brew info --cask zulu@17

After you install the JDK, update your JAVA_HOME environment variable. If you used above steps, JDK will likely be at 

/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home

The Zulu OpenJDK distribution offers JDKs for both Intel and M1 Macs. This will make sure your builds are faster on M1 Macs compared to using an Intel-based JDK.

If you have already installed JDK on your system, we recommend JDK 17. You may encounter problems using higher JDK versions.

In your ~/.bash_profile or ~/.zprofile insert the following:

export JAVA_HOME=$(/usr/libexec/java_home)

Don't forget to shut down your terminals and reopen after doing this.

Stereochemistry answered 1/5, 2024 at 13:6 Comment(0)
G
-1

Use brew instead of sudo apt, if you're using Mac.

Gainor answered 5/5, 2023 at 8:50 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.