gradlew uses wrong Java version - java

I am working on an android application using Kotlin. I am running a kotlin linter through command line ./gradlew klint.
But it gives me an error:
Gradle 4.4 requires Java 7 or later to run. You are currently using Java 6.
When I check the project structure, I am using the embedded JDK.
I also updated android studio to latest version. I do not know how to update the embedded JDK to latest version.
java version
"1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468) Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode)
which java - /usr/bin/java
echo $PATH - /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/username/Library/Android/sdk/platform-tools
echo $JAVA_HOME - empty

A copy of the latest OpenJDK comes bundled with Android Studio 2.2 and higher, and this is the JDK version we recommend you use for your Android projects.
https://developer.android.com/studio/intro/studio-config.html#jdk
This however, is only for building your apps within Android Studio, not from the terminal with gradlew, otherwise, it'll use whatever is on your OS's $PATH variable.
In order to use the embedded JDK, you at least need to set JAVA_HOME, for example on Linux/Mac,
$ export JAVA_HOME=/path/to/AndroidStudio/jdk # TODO: Find this
$ ./gradlew
My recommendation, however, is to use the mechanism for your OS for installing Java.
For easy Java library management (on Linux & Mac), you can try using sdkman

gradle.properties can be updated to point to the embedded JDK that comes with Android Studio in Mac OS:
org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home

The issue is resolved by adding :
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
at the start of the PATH variable . What i have found is that: There are three java locations.
Java that comes with mac (/usr/bin/java)
Java downloaded from oracle . ( /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin)
Java embedded with Android Studio (/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/)
In my case the gradlew was always using the java from MAC (point number 1).
So when i added the " java dowloaded from oracle (point 2)" at the start of path variable it started using the one from oracle and my gradlew command ran.

Related

Java updated to Java 8 but not able to locate folder in /System/Library/Java/JavaVirtualMachines folder on mac and not able to update java in android

I recently updated from Java 6 to Java 8 and it was successful.
I checked using this command:-
java -version
which is returning me:-
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)
This command is also saying that Java 8 is installed and the path is what I have asked in the question:-
/usr/libexec/java_home
returning:-
/Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home
I also updated JAVA_HOME variable and getting $JAVA_HOME as:-
-bash: /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home: is a directory
But I am not able to locate "jdk1.8.0_141.jdk" folder in "JavaVirtualMachines".
Please help me. I am building an android app which needs Java 8 and my android studio is not able to take Java 8 because I am not able to locate folder "jdk1.8.0_141.jdk"
Note : I have downloaded java 8 jdk from oracle.
Please find attached screenshots for more clarifications
I need to use Java 8 in one of my android app. Although I updated to Java 8 successfully(Please see screenshot) in android studio. But still I am getting the error that
"Error:Gradle 3.3 requires Java 7 or later to run. You are currently using Java 6."
And
"NumberFormatException: Invalid revision: 24.0.0-alpha1: Invalid revision: 24.0.0-alpha1"
And the contents of my app level gradle file are:-
NumberFormatException: Invalid revision: 24.0.0-alpha1: Invalid revision: 24.0.0-alpha1
The /System/Library/Java/JavaVirtualMachines folder is only used for the old Apple Java 1.6
The Oracle Java 8 installs in the /Library/Java/JavaVirtualMachines folder. You must specify this location to anything that wants to know where Java is located.

Even though JRE 8 is installed on my MAC -" No Java Runtime present,requesting to install " gets displayed in terminal

Even though JRE 8 is installed on my MAC OS Yosemite 10.10.3,while running the Android present in tools in sdk - the error - " No Java Runtime present,requesting to install " gets displayed in terminal- how do i solve this issue?
I wanted to install Xamarin test recorder - after installing they
asked me to install Android sdk
SDK is downloaded in Library/Developer/Xamarin/android-sdk
Now when I run Android present in tools folder - I get the error -
No Java run time
I've installed JRE 8 with get the verified
java version from their site
Can someone please help!!
You have to install the full JDK, not only the JRE.
I had the same issue and solved by installing JDK.
Please use this link to download the latest JDK version 19.
After installing openjdk with brew and runnning brew info openjdk I got this
And from that I got this command here, and after running it I got Java working
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
2021 solution
TL;DR
brew install temurin
Details
On an M1 Mac/Apple Silicon (running Big Sur), I had already openjdk installed. As signaled in a previous answer by Mohammed, openjdk is keg-only with brew, and hence requires adding a symlink.
After following this, it solved the No Java Runtime present error, but rJava was complaining about missing libjvm.dylib and that existing libraries were for the wrong architecture:
.onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(jvm, FALSE)
error: unable to load shared object '/opt/homebrew/Cellar/openjdk/16.0.2/libexec/openjdk.jdk/Contents/Home/lib/server/libjvm.dylib':
dlopen(/opt/homebrew/Cellar/openjdk/16.0.2/libexec/openjdk.jdk/Contents/Home/lib/server/libjvm.dylib, 10):
no suitable image found. Did find:
/opt/homebrew/Cellar/openjdk/16.0.2/libexec/openjdk.jdk/Contents/Home/lib/server/libjvm.dylib:
mach-o, but wrong architecture
Installing Eclipse Temurin (previously AdoptOpenJDK) (and removing the previously created symlink in /Library/Java/JavaVirtualMachines/openjdk.jdk) immediately solved both issues seamlessly.
Just run brew install temurin and everything should be OK.
I didn't need the full JDK, I just needed to make JRE work and none of the other answers provided above worked for me.
Maybe it used to work, but now (1st Jul 2018) it isn't working. I just kept getting the error and the pop-up.
I eventually solved this issue by placing the following JAVA_HOME export in ~/.bash_profile:
export JAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Hope this helps someone.
I'm running Mac OS High Sierra.
I just had to do the following on Mac:
brew install openjdk
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
export JAVA_HOME="/Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home"
java --version
If you came across the error when tried to generate a jks file (keystore), so try adding
/Applications/Android\ Studio.app/Contents/jre/Contents/Home/bin/keytool
before running the command, like so:
/Applications/Android\ Studio.app/Contents/jre/Contents/Home/bin/keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
Since it sounds like your JAVA_HOME variable is not set correctly, follow the instructions for setting that.
Setting JAVA_HOME environment variable on MAC OSX 10.9
I would imagine once you set this, it will stop complaining.
Maybe someone is still having the same issue. You can install openjdk using homebrew, and then add the new JDK bin directory to the front of your path:
cd ~
brew install openjdk
echo 'export PATH="/usr/local/opt/openjdk/bin:$PATH"' >> .bash_profile
source .bash_profile
Pre-Requisite:
I already had java11 installed on my machine using brew.
Step-1: brew info java11
output:
/opt/homebrew/Cellar/openjdk#11
USER1-MacBook-Pro JavaVirtualMachines % brew info java11
openjdk#11: stable 11.0.12 (bottled) [keg-only]
Development kit for the Java programming language
https://openjdk.java.net/
/opt/homebrew/Cellar/openjdk#11/11.0.12 (670 files, 273.0MB)
Poured from bottle on 2021-10-09 at 13:07:04
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/openjdk#11.rb
License: GPL-2.0-only
==> Dependencies
Build: autoconf ✔
==> Requirements
Build: Xcode ✘
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /opt/homebrew/opt/openjdk#11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk
openjdk#11 is keg-only, which means it was not symlinked into /opt/homebrew,
because this is an alternate version of another formula.
If you need to have openjdk#11 first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/openjdk#11/bin:$PATH"' >> ~/.zshrc
For compilers to find openjdk#11 you may need to set:
export CPPFLAGS="-I/opt/homebrew/opt/openjdk#11/include"
==> Analytics
install: 44,188 (30 days), 149,578 (90 days), 433,845 (365 days)
install-on-request: 19,074 (30 days), 63,262 (90 days), 187,286 (365 days)
build-error: 0 (30 days)
Step-2: Append openJDK path to existing path.
echo 'export PATH="/opt/homebrew/opt/openjdk#11/bin:$PATH"' >> ~/.zshrc
Step-3: Source existing shell or open new terminal to validate changes
source ~/.zshrc
Step-4: Check path is added
which java
output: /opt/homebrew/opt/openjdk#11/bin/java
Step-5:
java --version
openjdk 11.0.12 2021-07-20
OpenJDK Runtime Environment Homebrew (build 11.0.12+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.12+0, mixed mode)
working by following command
export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/Contents/Home"
TL;DR
For JDK 11 try this:
To handle this problem in a clean way, I suggest to use brew and jenv.
For Java 11 follow this 2 steps, first :
JAVA_VERSION=11
brew reinstall jenv
brew reinstall openjdk#${JAVA_VERSION}
jenv add /usr/local/opt/openjdk#${JAVA_VERSION}/
jenv global ${JAVA_VERSION}
And add this at end of your shell config scripts ~/.bashrc or ~/.zshrc
export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
export JAVA_HOME="$HOME/.jenv/versions/`jenv version-name`"
Problem solved!
Then restart your shell and try to execute java -version
Note: If you have this problem, your current JDK version is not existent or misconfigured (or may be you have only JRE).
In 2022:
No need to download Java anymore, once Android Studio is installed.
Even though Java 11 is embedded with Android Studio now, on Mac sometimes this problem arises and the Java runtime is not found.
So, I have solved this problem by doing these two steps:
In Android Studio go to File > Project Structure. If, under the SDK entry, you can see there is no default SDK selected, but a text in red "No SDK", click on it and you will find an SDK / JDK list, select one of them. Thats it.
Make sure you run Android Studio from Application Folder.
For this copy the Android Studio launcher to the Application folder. Then in the Finder, go to the Application folder. Right-click on it. Click on "Show package contents", then navigate up to jre folder. Copy the folder and paste it into your home folder.
Now setup the path from the terminal: you can create a folder named java_jre, and the path must be set to jre/contents/Home :
Noors-Mac-mini:bin noorhossain$ export JAVA_HOME="/Users/noorhossain/java_jre/jre/Contents/Home"
// now checking the version :
Noors-Mac-mini:bin noorhossain$ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)
OpenJDK 64-Bit Server VM (build 11.0.11+0-b60-7772763, mixed mode)
I solved the problem by installing oracle-sdk with brew.
brew install oracle-jdk --cask
In 2022, only if Android studio is installed:
Check if JDK is installed in Android studio. In Android Studio go to File > Project Structure. Under the SDK entry, if there is no default JDK selected, select from the list, or if there isn't any, add JDK and then apply to install.
After the JDK is installed in Android studio, you just need to add the JDK path directly from your Android Studio. Run the below command in the terminal and that's it.
echo 'export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/Contents/Home"' >> ~/.zshrc
Now, check if it's working.
❯ java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)
OpenJDK 64-Bit Server VM (build 11.0.11+0-b60-7772763, mixed mode)
No need to install any package from brew or create any symlink. The Java is already embedded with the Android studio and we can use this directly for our system.
In newer versions of OS X (especially Yosemite, EL Capitan), Apple has removed Java support for security reasons.
To fix this you have to do the following.
Download Java for OS X 2015-001 from this link: https://support.apple.com/kb/dl1572?locale=en_US
Mount the disk image file and install Java 6 runtime for OS X.
After this you should not be seeing any of the below messages:
- Unable to find any JVMs matching version "(null)"
- No Java runtime present, try --request to install.
This should resolve the issue for the pop-up shown below:
Below is worked for me on macos mojave 10.14.6 version
I installed current jdk(https://www.oracle.com/java/technologies/javase-downloads.html)
Then do respectively;
vim .bash_profile
add "export JAVA_HOME=$(/usr/libexec/java_home)" to bash_profile
source .bash_profile
it is done. And you can check the version with java -version command.
If you are having this issue for the same reason that I am, I can tell you why it is happening. I just don't know how to fix it yet.
Here it is:
I am using JDK version 1.8 on MacOS Big Sur. I do not want to have to install a later version of the JDK because all my projects run on 1.8. But here's the thing.... On the command line
java -version
Returns this:
openjdk version "1.8.0_302"
OpenJDK Runtime Environment (build 1.8.0_302-bre_2021_08_14_21_34-b00)
OpenJDK 64-Bit Server VM (build 25.302-b00, mixed mode)
but a slightly different command (version prefixed with 2 dashes instead of 1)
java --version
returns this error:
Unrecognized option: --version
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
This is because Java 8 uses single dash version, all JDKs after use double dash.
So the machine, when looking for JAVA_HOME, is also using double dashes and getting the error.
just run this
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
I have Mojave 10.14.6 and the only thing that did work for me was:
setting JAVA_HOME to the following:
export JAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
source .bash_profile (or wherever you keep your vars, in my case .zshrc)
Hope it helps! You can now type java --version and it should work
It's worth noting that with my current version of SQLDeveloper (21.2.1), there's another way to specify the JDK location. In my case, I was able to open up ~/.sqldeveloper/21.2.1/product.conf and set the JavaHome directive to the appropriate directory. I use jabba for JDK version management, and this path was something like ~/.jabba/jdk/amazon-corretto#1.8.292-10.1/Contents/Home. Needless to say, just setting that config value and restarting SQLDeveloper left me with a running copy again. This should work with any version of SQLDeveloper given the product.conf file exists inside your user's .sqldeveloper directory appropriate for the version you are using.
install JDK it will work ,
here is the jdk link to download .
link: https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-
5672538.html

Error:Could not initialize class com.android.sdklib.repositoryv2.AndroidSdkHandler

I want to build this project with Android Studio at launching, but take a error. Stacktrace is here
This problem occurs when there are multiple JDKs installed in your system, I had the same issue as I had mistakenly installed oracle-jdk-9 and Android studio requires oracle-jdk-8
If you are using Ubuntu you can install jdk-8 from this question.
So, Make following changes as shown below:
Press ctrl+shift+alt+s that will open project structure which can also be opened from
File -> Project Structure
And then change JDK Location where you may have installed JDK 8
this because your classpath build tools in build.gradle root project is deprecated update like this for new android studio 3.2.0
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0-alpha14'
}
and after that update your minimum sdk and build tools to latest and no problem again
I had the same problem. I had installed Java 8 and Java 9.
I set JAVA_HOME to Java 8, but Gradle was using Java 9.
I changed the JDK in File->Project Structure to Java 8 and it worked.
JAVA 9 has forcefully taken over the JAVA_HOME to itself.
after installing java9 you will find
# java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
So instead of uninstalling java 9 let us point the JAVA_HOME back to java 8
First find out the Android studio embeded JRE location
and add an entry in ~./bash_profile at last
export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home"
# source ~/.bash_profile
# java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
source
http://scalebean.blogspot.com/2018/01/fix-gradle-could-not-initialize-class.html
Changing the JDK in Android Studio to point back at 8 didn't work for me. I uninstalled Java 9 and this solved the issue.
One simple solution:
React-Native isn't compatible with Java 9 or Java 10
Resolve this issue by simply downgrading to Java 8
Go to build.gradle,
and make sure your gradle dependencies up to date.
For Android studio 4.2.2
dependencies {
classpath 'com.android.tools.build:gradle:4.2.2'
.........
.........
}
If you have several Javas in Ubuntu, you can
sudo update-alternatives --config java
sudo update-alternatives --config javac
to select the Java 8 that Android and Gradle need.
If anyone is having issues with IntelliJ IDEA, go to File -> Project Structure (or press Ctrl + Alt + Shift + S) and remove all JDK 9 entries. JDKs are marked under Platform Settings -> SDKs with a folder behind a tiny blue cup of coffee.
I tried adding the correct path to JDK 1.8 but IntelliJ IDEA will default back to JDK 9 for whatever reason. Unfortunately, I need JDK 9 for other projects, so uninstalling it would be too much of a hassle. If you need to use JDK 9 for another project (like I do), you can still add a JDK 9 entry via the same menu and then remove it again when required.
If the Problem Persists, just import the gradle to Android Studio and build the file inside the Android Studio.
Android Studio automatically handles gradle and sdk problems.
After successful build you can also try running the app via react-native run-android in the
Command Prompt. Hope this Helps.
This was the only fix that fixed this issue.
I tried all the above answers but problem persisted

eclipse JNI_CreateJavaVM error at mac os x

i am using mac os x 10.8.2. i have installed java 1.7 and then take back since i can not send iphone applications via xcode. now java 1.6 is installed.
ysnky# ~$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
ysnky# ~$
but now i can not run eclipse. it does not open, it gives this alert and closed.
The JVM shared library "/System/Library/Frameworks/JavaVM.framework"
does not contain the JNI_CreateJavaVM symbol.
i am really confused and can not find a solution. i just want to run eclipse, that is all :(
thanks.
You can download and install from apple website.It works perfect for
me
http://support.apple.com/kb/DL1572?viewlocale=en_US
Update your Mac. Apple has provided new Java update which fixes this issue.
If you don't have the file /System/Library/Frameworks/JavaVM.framework/Versions/Current execute the following command
cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/A Current
I was able to solve this by first removing any previously installed versions of the Oracle Java jdk. Instructions are here:
http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html#uninstall
Then installing Apple's official Java JDK. For some reason the Java download page on support.apple.com came back blank for me, but via Google's cached copy of the page, I found the direct link to download, which is what finally fixed this issue for me:
http://support.apple.com/downloads/DL1572/en_US/JavaForOSX2014-001.dmg
You can download and install from apple website.It works perfect for me on mac 10.9.5
http://support.apple.com/kb/DL1572?viewlocale=en_US

Android SDK update fails, saying-> XML verification failed for http://dl-ssl.google.com/android/repository/repository.xml

Am new to Java and Android. I am trying to install Android SDK on Debian Squeeze. I have just downloaded and setup the SDK. When I try to update the packages list I get following error.
XML verification failed for http://dl-ssl.google.com/android/repository/repository.xml.
Error: java.lang.NullPointerException
I have checked the force https to use http and this is the only error I see. Am I missing something?
I just checked my java version
kumar#gentlehow-lx:/$ java --version
java version "1.5.0"
gij (GNU libgcj) version 4.4.5
...
I tried to do a sudo update and the packages were not updated.
I fixed this by manually downloading the XML and then from XML I figured out which zip file I needed. After downloading the file I simply extracted the file and moved the extracted folder to SDK/platforms folders. The API was visible in in Installed components.
I've found that this seems to be an issue with the java-gcj.
Once I installed the oracle java and stopped using java-gcj the error went away.
You can grab the oracle java here: http://www.oracle.com/technetwork/java/javase/downloads/index.html
Also, after installing oracle java and when using Fedora I had to issue the following two commands to get the oracle java to be the default:
sudo alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_25/bin/java 20000
sudo alternatives --install /usr/bin/javaws /usr/java/jdk1.6.0_25/bin/javaws 20000
After installation, running 'java -version' should give you a simliar output to verify it installed correctly:
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) Server VM (build 20.0-b11, mixed mode)
Re-run the android tools and everything should work.
try this: find the file androidtool.cfg and add the following line:
sdkman.force.http=true
and try again.

Categories