我正在使用带有gradle的javadoc doclet,所以我需要使用package tools.jar,它位于jdk的lib文件夹中(在我的情况下为1.6.0_26)。
重点是gradle没有自动获取它,所以我将该工具包添加到我的libs文件夹,然后将其添加到dependencies.gradle。
现在我想直接从我的JDK home转到我的dependencies.gradle。有没有办法做到这一点?我在我的dependencies.gradle中试过了下一个:
compile files("${System.properties['java.home']}/lib/tools.jar")
但在编译时却找不到它。
答案 0 :(得分:122)
当我尝试通过CLI运行命令时遇到此问题。
系统查看JRE文件夹时出现问题,即
D:\Program Files\Java\jre8\bin
。如果我们查看那里,就没有Tools.jar
,因此错误。
您需要找到JDK
的位置,在我的情况下:D:\Program Files\Java\jdk1.8.0_11
,如果您查看lib
目录,则会看到Tools.jar
。
然后你需要编辑你的PATH变量以包含JAVA_HOME,即%JAVA_HOME%/bin;
重新打开命令提示符,应该运行。
答案 1 :(得分:72)
找到它。 系统属性'java.home'不是JAVA_HOME环境变量。 JAVA_HOME指向JDK,而java.home指向JRE。有关详细信息,请参阅that page。
Soo ......我的问题是我的起点是jre文件夹(C:\ jdk1.6.0_26 \ jre)而不是jdk文件夹(C:\ jdk1.6.0_26),因为我认为(tools.jar是在C:\ jdk1.6.0_26 \ lib文件夹中)。 dependencies.gradle中的编译行应为:
compile files("${System.properties['java.home']}/../lib/tools.jar")
答案 2 :(得分:66)
我在使用Eclipse尝试执行Gradle任务时遇到了同样的错误。每次我运行命令(即战争)时,该过程都会抛出异常,如:
无法找到tools.jar。请检查C:\ Program Files \ Java \ Jre8"是一个有效的JDK安装。
我尝试了这篇文章中列出的解决方案,但没有一个解决了这个问题。在这里我的解决方案:
再次跑步,享受!
答案 3 :(得分:41)
我刚刚添加了一个gradle.properties
文件,其中包含以下内容:
org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
答案 4 :(得分:21)
我使用 Ubuntu 进行了类似的案例。机器只安装了 JRE 。所以,我刚刚执行了以下命令来安装 JDK 。
sudo apt install openjdk-8-jdk
答案 5 :(得分:17)
我对这个解决方案也很挣扎。使用Gradle找到了一种更好的方法,如here所述。 我们可以从Gradle本身获取JVM / JDK信息。
dependencies {
runtime files(org.gradle.internal.jvm.Jvm.current().toolsJar)
}
这么简单。
答案 6 :(得分:15)
将此添加到gradle.properties
:
org.gradle.java.home = C:\ Program Files \ Java \ jdk1.8.0_91
答案 7 :(得分:12)
在CentOS7中,开发包将安装tools.jar。该文件不存在于java-1.8.0-openjdk
中 sudo yum install java-1.8.0-openjdk-devel
答案 8 :(得分:11)
可能两年太晚了,但我最近遇到了同样的问题,这是我找到this post后得到的解决方案:
import javax.tools.ToolProvider
dependencies {
compile (
files(((URLClassLoader) ToolProvider.getSystemToolClassLoader()).getURLs()),
...
}
}
如果java.home指向不在JDK目录下的目录,甚至在Mac OS上你有class.jar而不是tools.jar,它应该可以工作。
答案 9 :(得分:8)
在Windows 10上,我遇到了同样的问题,这是我如何修复问题的;
Advance System Settings>Environment Variables>System
Variables
C:\ProgramData\Oracle\Java\javapath
C:\Program Files\Java\jdk1.8.0_162
答案 10 :(得分:4)
在我的系统(Win 10,JRE 1.8.0,Android Studio 3.1.2,Gradle 4.1)上,JRE目录中没有tools.jar
(C:\Program Files\Java\jre1.8.0_171
)。
但是,我在C:\Program Files\Android\Android Studio\jre\lib
找到了它,并尝试设置 JAVA_HOME=C:\Program Files\Android\Android Studio\jre
这对我有效!
答案 11 :(得分:3)
<强>的Linux 强>
在 nano 或 gedit 等任何文本编辑器中打开/etc/environment
,然后添加以下行:
JAVA_HOME="/usr/lib/jvm/open-jdk"
Windows
在“系统变量”下,单击“添加”按钮,然后单击以下行:
变量名称中的:JAVA_HOME
:C:\Program Files\Java\jdk1.x.x_xxx
x.x_xxx
jdk版本,您可以从此处获取您的jdk版本C:\Program Files\Java
在系统变量下,选择路径,然后单击编辑,然后单击新按钮,然后单击以下行:
%JAVA_HOME%/bin;
答案 12 :(得分:3)
在Centos 7中,我发现只有JDK具有tools.jar
,而JRE没有。我已经安装了Java 8 JRE(yum install java-1.8.0-openjdk
),但没有安装JDK(yum install java-1.8.0-openjdk-devel
)。
安装后者可以解决此问题。另外,请记住设置JAVA_HOME
。
答案 13 :(得分:2)
与其他答案一样,我在 gradle.properties 文件中设置 org.gradle.java.home 属性。但是\ _分隔符的路径不起作用(在Windows 10上构建):
通过&#org.gradle.java.home提供的Java主页&#39;是无效的。无效 目录:C:Program FilesJavajdk1.8.0_65
所以而不是
org.gradle.java.home = C:\ Program Files \ Java \ jdk1.8.0_65
我必须使用
org.gradle.java.home = C:/ Program Files / Java / jdk1.8.0_65
然后构建成功
问题是项目是使用JRE而不是JDK构建的,因为我是从eclipse构建的,所以这也很有效:
答案 14 :(得分:2)
在我的情况下(Windows 10),Java更新后我丢失了环境变量,因此我根据以下步骤https://confluence.atlassian.com/doc/setting-the-java_home-variable-in-windows-8895.html
重新添加了变量答案 15 :(得分:2)
出现此问题是因为 macOS Big Sur 中的环境变量 JAVA_HOME
未正确设置。
第 1 步 - 通过在终端中打印其值来确认您对 JAVA_HOME
有问题。您很可能会得到一个空字符串。
echo $JAVA_HOME
第 2 步 - 在您的机器上找到正确的路径
/usr/libexec/java_home -V
复制与“Java SE 8”关联的路径,通常看起来像 /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
第 3 步 - 使用 .zshenv
编辑 nano
nano ~/.zshenv
第 4 步 - 将第 2 步中的路径添加到文件中,如下所示
export JAVA_HOME=YOUR_JAVA_PATH
示例:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
第 5 步 - 获取更新的 .zshenv
文件以激活环境变量
source ~/.zshenv
第 6 步 - 打印以确认路径
echo $JAVA_HOME
答案 16 :(得分:2)
我在Mac上的解决方案:
将此行添加到gradle.properties
:
org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
不是这个:
org.gradle.java.home=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
您可以打开最后一个主目录,将发现不存在lib/tools.jar
文件,因此将路径更改为JavaVirtualMachines/jdk1.8.0_271.jdk
,它对我有用。
顺便说一句,在终端中,我回显$JAVA_HOME
并且它得到的是第一条路径,而不是第二条路径,我认为这就是为什么我的Gradle无法正常工作的原因。
答案 17 :(得分:1)
通过“打开Gradle运行配置”中的JAVA_HOME选项卡添加JDK路径将解决问题。
答案 18 :(得分:1)
这对我有用:
我收到了消息
任务执行失败&#39;:app:compileDebugJavaWithJavac&#39;。
无法找到tools.jar。请检查C:\ Program Files \ Java \ jre1.8.0_121是否包含有效的JDK安装。
答案 19 :(得分:1)
您是否确保tools.jar在编译类路径上创建了它?也许路径不正确。
task debug << {
configurations.compile.each { println it }
}
答案 20 :(得分:1)
如果您使用终端进行构建,并且出现此错误,则可以指向gradle.properties
文件中与android studio捆绑的jdk:
org.gradle.java.home=/usr/local/android-studio/jre
答案 21 :(得分:1)
在gradle.properties文件中放入以下代码行:
org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45
答案 22 :(得分:1)
为我解决的问题如下:
答案 23 :(得分:0)
我的 Android Studio 版本:4.2.1
“tools.jar” 由 android studio 编译所需的 Oracle JDK 提供 - 我在我的 PC 上将 android studio 更新到最新版本后遇到了这个问题。
要解决此问题,请按照以下步骤操作:
在Android studio File -> Project Structure -> SDKs(在平台设置下)
A) 如果中间窗格中不存在 JDK/JDK 主路径(中间窗格还包含已下载的 Android SDK),则通过在中间窗格中按“+”符号添加 JDK 路径
B) Java sdk 通常存在/安装在 64 位路径 => "C:\Program Files\Java\jdk1.X.Y_ABC"(在我的 PC 中是 1.8.0_202)或 32 位 => "C:\Program Files (x86)\Java\jdk1.X.Y_ABC"
如果您的 PC 中没有安装 JDK, 请从 Oracle Java 网站下载并安装 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
在系统环境变量中设置JDK和JRE路径(从步骤2中提到的网页下载)
A) 按 windows 键键入“编辑系统环境变量”并打开应用程序
B) 进入 Advanced -> Environment Variables 在系统变量下添加 JAVA_HOME 和 JRE_HOME 如下
Set Windows system environment variable
答案 24 :(得分:0)
找不到 tools.jar
MacOS
echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
并重启 Shell
答案 25 :(得分:0)
对我来说这个错误是在尝试使用 audioplayers flutter 库后发生的。 为了解决我得到了文件夹的tools.jar:
<块引用>C:\Program Files\Android\Android Studio\jre\lib
并粘贴
<块引用>C:\Program Files\Java\jre1.8.0_181\lib.
此后构建工作正常。
答案 26 :(得分:0)
我以这种方式解决了问题:
答案 27 :(得分:0)
我尝试了大多数顶级选项,但似乎我的环境设置有问题,因此它们无济于事。为我解决了这个问题的是重新安装 jdk1.8.0_201
和jre1.8.0_201
,这为我解决了错误。希望能对某人有所帮助。