Reputation: 5139
I am using javadoc doclets with gradle, so I need to use the package tools.jar, which is in the lib folder from the jdk (1.6.0_26 in my case).
The point is that gradle does not take it automatically, so I was adding that tools package to my libs folder, and then adding it to dependencies.gradle .
Now I want to take it directly from my JDK home into my dependencies.gradle. Is there a way to do that? I have tried the next in my dependencies.gradle:
compile files("${System.properties['java.home']}/lib/tools.jar")
But it does not find it while compiling.
Upvotes: 196
Views: 389652
Reputation: 1
In Case, Non of the above solutions work. Simply copy tools.jar file from jdk folder into the jre folder. Make sure you have elevated privileges before you make this move.
Upvotes: 0
Reputation: 493
Use this with modern versions of gradle:
def compiler = javaToolchains.compilerFor { languageVersion = JavaLanguageVersion.of(java.sourceCompatibility.majorVersion) }.get()
implementation compiler.metadata.installationPath.files('lib/tools.jar')
Upvotes: 3
Reputation: 54
For Windows add JDK home path to the Gradle property file as org.gradle.java.home. If you don't have gradle.properties file then create a new one and add
Ex: org.gradle.java.home=C:\Program Files\Java\jdk1.8.0_241
Upvotes: 0
Reputation: 10595
In macOS Big Sur
The issue happens because of the environment variable JAVA_HOME
is not correctly set in macOS Big Sur.
Step 1 - Confirm that you have issue with JAVA_HOME
by printing its value in the terminal. You will most likely get an empty string.
echo $JAVA_HOME
Step 2 - Find the correct path on your machine
/usr/libexec/java_home -V
Copy that path associated with "Java SE 8" which usually looks like /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
Step 3 - Edit .zshenv
using nano
nano ~/.zshenv
Step 4 - Add the path from step 2 to the file as follows
export JAVA_HOME=YOUR_JAVA_PATH
example:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
Step 5 - Source the updated .zshenv
file to activate the environment variable
source ~/.zshenv
Step 6 - Print to confirm the path
echo $JAVA_HOME
Upvotes: 38
Reputation: 11
My Android Studio Version: 4.2.1
The "tools.jar" is provided by Oracle JDK which is required by android studio for compilation - I have faced this issue after updating android studio to latest version in my PC.
To Resolve the issue follow below steps:
In Android studio File -> Project Structure -> SDKs (Under Platform Settings)
A) Add JDK path by pressing '+' symbol in middle pane if suppose JDK/JDK home path is not present in the middle pane already (Middle pane also contains the Downloaded Android SDK's)
B) Java sdk will be usually present/installed in the path 64 bit => "C:\Program Files\Java\jdk1.X.Y_ABC" (In my PC it is 1.8.0_202) or 32 bit => "C:\Program Files (x86)\Java\jdk1.X.Y_ABC"
If suppose you don't have JDK installed in your PC, please download and install from Oracle Java website https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
Set JDK and JRE Path(Download both from webpage mentioned in step 2) in system environment variable
A) Press windows key type "Edit the system environment variables" and open the application
B) Go to Advanced -> Environment Variables Under system variables add JAVA_HOME and JRE_HOME as below
Set Windows system environment variable
Upvotes: 0
Reputation: 34215
Could not find tools.jar
MacOS
echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
And restart Shell
Upvotes: 1
Reputation: 361
For me this error ocurred after trying to use audioplayers flutter library. To solve i got tools.jar of the folder:
C:\Program Files\Android\Android Studio\jre\lib
and pasted on
C:\Program Files\Java\jre1.8.0_181\lib.
After this the build worked fine.
Upvotes: 0
Reputation: 983
My solution on Mac:
add this line to gradle.properties
:
org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
not this one:
org.gradle.java.home=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
you can open the last home directory and will find that there is no lib/tools.jar
file existence, so change the path to JavaVirtualMachines/jdk1.8.0_271.jdk
and it works for me.
By the way, in the terminal, I echo the $JAVA_HOME
and it gets the first path, not the second one, I think this is why my Gradle cannot work properly.
Upvotes: 13
Reputation: 51
What solved it for me was the following:
Upvotes: 5
Reputation: 57
Put in gradle.properties file the following code line:
org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
Upvotes: 2
Reputation: 89
I solved problem on this way:
Upvotes: 2
Reputation: 13533
I've tried most of the top options but it seems that I had something wrong with my environment setup so they didn't help. What solved the issue for me was to re-install jdk1.8.0_201
and jre1.8.0_201
and this solved the error for me. Hope that helps someone.
Upvotes: 1
Reputation: 12728
With Centos 7, I have found that only JDK has tools.jar
, while JRE has not. I have installed the Java 8 JRE(yum install java-1.8.0-openjdk
), but not the JDK(yum install java-1.8.0-openjdk-devel
).
Installing the latter solves the problem. Also, remember to set JAVA_HOME
.
Upvotes: 12
Reputation: 788
If you use terminal to build and you have this error you can point to jdk bundled with android studio in your gradle.properties
file:
org.gradle.java.home=/usr/local/android-studio/jre
Upvotes: 4
Reputation: 143
On my system (Win 10, JRE 1.8.0, Android Studio 3.1.2, Gradle 4.1) there is no tools.jar
in the JRE directory (C:\Program Files\Java\jre1.8.0_171
).
However, I found it in C:\Program Files\Android\Android Studio\jre\lib
and tried setting JAVA_HOME=C:\Program Files\Android\Android Studio\jre
That works (for me)!
Upvotes: 9
Reputation: 764
In CentOS7 the development package will install tools.jar. The file is not present in java-1.8.0-openjdk
sudo yum install java-1.8.0-openjdk-devel
Upvotes: 22
Reputation: 816
On windows 10, I encounter the same problem and this how I fixed the issue;
Advance System Settings>Environment Variables>System
Variables
C:\ProgramData\Oracle\Java\javapath
C:\Program Files\Java\jdk1.8.0_162
Upvotes: 10
Reputation: 15689
I had a similar case using Ubuntu. The machine had only the JRE installed. So, I just executed the command below to install the JDK.
sudo apt install openjdk-8-jdk
Upvotes: 44
Reputation: 52366
This worked for me:
I was getting message
Execution failed for task ':app:compileDebugJavaWithJavac'.
Could not find tools.jar. Please check that C:\Program Files\Java\jre1.8.0_121 contains a valid JDK installation.
Upvotes: 3
Reputation: 11
Adding JDK path through JAVA_HOME tab in "Open Gradle Run Configuration" will solve the problem.
Upvotes: 1
Reputation: 62189
Add this to gradle.properties
:
org.gradle.java.home=C:\Program Files\Java\jdk1.8.0_91
Upvotes: 19
Reputation: 3679
Linux
Open /etc/environment
in any text editor like nano or gedit and add the following line:
JAVA_HOME="/usr/lib/jvm/open-jdk"
Windows
Under System Variables, click add button, then past the following lines:
in Variable Name : JAVA_HOME
in Variable Value : C:\Program Files\Java\jdk1.x.x_xxx
where x.x_xxx
jdk version you can get your jdk version from here C:\Program Files\Java
Under System Variables, select Path, then click Edit,then click new button then past the following line:
%JAVA_HOME%/bin;
Upvotes: 3
Reputation: 819
In my case (Windows 10) after Java update I lost my Enviroment Variables, so I fixed added the variables again, based in the following steps https://confluence.atlassian.com/doc/setting-the-java_home-variable-in-windows-8895.html
Upvotes: 2
Reputation: 1435
Like other answers I set org.gradle.java.home property in gradle.properties file. But path with \ separators did not work (building on windows 10):
Java home supplied via 'org.gradle.java.home' is invalid. Invalid directory: C:Program FilesJavajdk1.8.0_65
So instead of
org.gradle.java.home=C:\Program Files\Java\jdk1.8.0_65
i had to use
org.gradle.java.home=C:/Program Files/Java/jdk1.8.0_65
then the build was successful
Problem is that project is build with JRE instead of JDK and since I was building it from eclipse this also worked:
Upvotes: 2
Reputation: 1670
I got the same error using Eclipse trying to execute a Gradle Task. Every time I run a command (i.e. war) the process threw an exception like:
Could not find tools.jar. Please check that C:\Program Files\Java\Jre8" is a valid JDK install.
I tried the solution listed in this post but none of them solved this issue. Here my solution :
Run again, Enjoy!
Upvotes: 74
Reputation: 900
I just added a gradle.properties
file with the following content:
org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
Upvotes: 63
Reputation: 424
I was struggling as well for this Solution. Found a better way to it with Gradle as described here. We can get the JVM/JDK information from Gradle itself.
dependencies {
runtime files(org.gradle.internal.jvm.Jvm.current().toolsJar)
}
So simple.
Upvotes: 27
Reputation: 18072
I had this problem when I was trying to run commands through CLI.
It was a problem with system looking at the JRE folder i.e.
D:\Program Files\Java\jre8\bin
. If we look in there, there is no Tools.jar
, hence the error.
You need to find where the JDK
is, in my case: D:\Program Files\Java\jdk1.8.0_11
, and if you look in the lib
directory, you will see Tools.jar
.
What I did I created a new environment variable JAVA_HOME
:
And then you need to edit your PATH variable to include JAVA_HOME, i.e. %JAVA_HOME%/bin;
Re-open command prompt and should run.
Upvotes: 163
Reputation: 2699
It may be two years too late, but I ran into the same problem recently and this is the solution I ended up with after finding this post:
import javax.tools.ToolProvider
dependencies {
compile (
files(((URLClassLoader) ToolProvider.getSystemToolClassLoader()).getURLs()),
...
}
}
It should work if java.home points to a directory that's not under the JDK directory and even on Mac OS where you'd have classes.jar instead of tools.jar.
Upvotes: 11
Reputation: 5139
Found it. System property 'java.home' is not JAVA_HOME environment variable. JAVA_HOME points to the JDK, while java.home points to the JRE. See that page for more info.
Soo... My problem was that my startpoint was the jre folder (C:\jdk1.6.0_26\jre) and not the jdk folder (C:\jdk1.6.0_26) as I thought(tools.jar is on the C:\jdk1.6.0_26\lib folder ). The compile line in dependencies.gradle should be:
compile files("${System.properties['java.home']}/../lib/tools.jar")
Upvotes: 82