Gradle não encontra tools.jar


160

Estou usando doclets javadoc com gradle, então preciso usar o pacote tools.jar, que está na pasta lib do jdk (1.6.0_26 no meu caso).

O ponto é que o gradle não aceita automaticamente, então eu estava adicionando esse pacote de ferramentas à minha pasta libs e, em seguida, adicionando-o ao dependencies.gradle.

Agora eu quero levá-lo diretamente da minha casa JDK para o meu dependencies.gradle. Existe uma maneira de fazer isso? Eu tentei o próximo em minhas dependencies.gradle:

compile files("${System.properties['java.home']}/lib/tools.jar")

Mas não o encontra durante a compilação.


2
Vale ressaltar que, como pré-cursor para resolver isso e quando eu o encontrei, você precisa se certificar de que realmente tem um JDK instalado: P E, em alguns sistemas, você necessidade de instalar o pacote JDK devel para obter tools.jar
mrooney

Respostas:


140

Eu tive esse problema quando estava tentando executar comandos através da CLI.

Houve um problema com o sistema olhando para a pasta JRE, ou seja D:\Program Files\Java\jre8\bin. Se olharmos para lá, não há Tools.jar, daí o erro.

Você precisa descobrir onde JDKestá, no meu caso:, D:\Program Files\Java\jdk1.8.0_11e se você olhar no libdiretório, verá Tools.jar.

O que eu fiz, criei uma nova variável de ambiente JAVA_HOME: insira a descrição da imagem aqui

E então você precisa editar sua variável PATH para incluir JAVA_HOME, ou seja, %JAVA_HOME%/bin; insira a descrição da imagem aqui

Abra novamente o prompt de comando e deve executar.


15
o tool.jar %JAVA_HOME%\lib;não está na binpasta.
GMsoF

5
isso significa que deveríamos adicionar ambos %JAVA_HOME%/bine %JAVA_HOME%/libà Pathvariável então?
Eric

3
Embora o tools.jar esteja realmente em \ lib, adicionar apenas \ bin ao caminho, como na solução, funcionou para mim, mas não pergunte o porquê.
PHPirate

1
Geralmente, é necessário reiniciar / sair para que as alterações tenham efeito.
reiner_zuphall

4
Eu tive que remover a entrada PATH C: \ ProgramData \ Oracle \ Java \ javapath e substituí-la por C: \ ProgramData \ Oracle \ Java \ jdk1.8.xxx, porque estava padronizada no diretório irmão JRE
John

76

Encontrei. A propriedade do sistema 'java.home' não é variável de ambiente JAVA_HOME. JAVA_HOME aponta para o JDK, enquanto java.home aponta para o JRE. Veja essa página para mais informações.

Soo ... Meu problema era que meu ponto de partida era a pasta jre (C: \ jdk1.6.0_26 \ jre) e não a pasta jdk (C: \ jdk1.6.0_26) como eu pensava (tools.jar está no C : pasta \ jdk1.6.0_26 \ lib). A linha de compilação em dependencies.gradle deve ser:

compile files("${System.properties['java.home']}/../lib/tools.jar")

28
Então, como definir java.home na idéia com gradle?
Chinaxing 10/10

73

Eu recebi o mesmo erro usando o Eclipse tentando executar uma tarefa Gradle. Toda vez que executo um comando (ou seja, guerra), o processo gera uma exceção como:

Não foi possível encontrar o tools.jar. Por favor, verifique se C: \ Arquivos de Programas \ Java \ Jre8 "é uma instalação válida do JDK.

Tentei a solução listada neste post, mas nenhum deles resolveu esse problema. Aqui está a minha solução:

  1. Vá para a visualização "Tarefa Gradle"
  2. Clique com o botão direito do mouse na tarefa que deseja executar
  3. Selecione Open Gradle Run Configuration
  4. Na guia "Java Home", selecione seu repositório JDK local e clique em OK

Corra novamente, divirta-se!


2
Eu encontrei essa resposta após horas de pesquisa e isso finalmente funcionou. Muito obrigado!
Alan47

5
Não consigo encontrar o Open Gradle Run e o Java Home. Você pode explicar mais?

Sendo novo nisso, como um "Ir para a visualização" Tarefa Gradle ""? Não vejo nada de Gradle no menu Exibir, nem nada rotulado como esse?
Dronz 23/10/19

48

Acabei de adicionar um gradle.propertiesarquivo com o seguinte conteúdo:

org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_45

5
No linux, você também pode editar o ~/.gradle/gradle.propertiesarquivo, adicionando org.gradle.java.home=/usr/lib/jvm/java. Obras para me no Fedora 24.
samsong8610

36

Eu tive um caso semelhante usando o Ubuntu . A máquina tinha apenas o JRE instalado. Então, acabei de executar o comando abaixo para instalar o JDK .

sudo apt install openjdk-8-jdk


1
Sim, instalar o JDK em vez do JRE também resolveu o problema para mim.
peschü 16/01/19

20

Eu também estava lutando por esta solução. Encontrei uma maneira melhor com o Gradle, conforme descrito aqui . Podemos obter as informações da JVM / JDK da própria Gradle.

dependencies {
   runtime files(org.gradle.internal.jvm.Jvm.current().toolsJar)
}

Tão simples.


3
Isso funciona para mim se eu usar em compilevez deruntime
Dori

Eu gosto desta solução. É agradável e portátil.
Adam Plumb

4
Esta solução não funciona com o Gradle 4.x. Eu recebo um NullPointerException.
Thunderforge

1
Eu posso imaginá-lo retornando nulo quando não há tools.jar disponível no JDK mais recente. Veja github.com/gradle/gradle/blob/master/subprojects/base-services/…
Mohammed

17

No CentOS7, o pacote de desenvolvimento instala o tools.jar. O arquivo não está presente no java-1.8.0-openjdk

sudo yum install java-1.8.0-openjdk-devel


Graças Richard! Isso realmente me ajudou! Eu estava com dificuldade para executar o "react-native run-android" e obtendo o erro: * O que deu errado: Falha na execução da tarefa ': app: compileDebugJavaWithJavac'. > Não foi possível encontrar o tools.jar. Verifique se /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-5.b14.fc27.x86_64/jre contém uma instalação válida do JDK. Agora está funcionando! Obrigado novamente!
Matheus Gontijo

Obrigado Richard .. Funcionou para mim também. Basicamente, foi um problema de caminho JAVA_HOME que tentou encontrar tools.jar no caminho java jdk desejado.
rajdeepbs29

16

Adicione isto a gradle.properties:

org.gradle.java.home = C: \ Arquivos de Programas \ Java \ jdk1.8.0_91


7
Não se esqueça de usar barras duplas nas costas. Por exemplo: org.gradle.java.home=C:\\Program Files\\Java\\jdk1.8.0_144\ .
CoolMind 03/04

11

Pode demorar dois anos, mas encontrei o mesmo problema recentemente e esta foi a solução que encontrei após encontrar este post :

import javax.tools.ToolProvider

dependencies {
  compile (
    files(((URLClassLoader) ToolProvider.getSystemToolClassLoader()).getURLs()),
    ...
  }
}

Deverá funcionar se java.home apontar para um diretório que não esteja no diretório JDK e até no Mac OS, onde você teria classes.jar em vez de tools.jar.


Não é possível invocar o método getURLs () no objeto nulo
Ulterior

10

Com o Centos 7, descobri que apenas o JDK possui tools.jar, enquanto o JRE não possui . Eu instalei o Java 8 JRE ( yum install java-1.8.0-openjdk), mas não o JDK ( yum install java-1.8.0-openjdk-devel).

A instalação do último resolve o problema. Além disso, lembre-se de definir JAVA_HOME.


9

No Windows 10, encontro o mesmo problema e foi assim que corrigi o problema;

  1. Acesso Advance System Settings>Environment Variables>System Variables
  2. Selecione PATH sobrescrever o padrão C:\ProgramData\Oracle\Java\javapath
  3. Com sua própria instalação jdk que é JAVA_HOME =C:\Program Files\Java\jdk1.8.0_162

esta deve ser a resposta aceita para o Windows :)
obrigado

6

No meu sistema (Win 10, JRE 1.8.0, Android Studio 3.1.2, Gradle 4.1), não há tools.jarno diretório JRE ( C:\Program Files\Java\jre1.8.0_171).

No entanto, eu o encontrei C:\Program Files\Android\Android Studio\jre\libe tentei definirJAVA_HOME=C:\Program Files\Android\Android Studio\jre

Isso funciona (para mim)!


Mesmo problema, corrigido para mim, também o Win 10 / Android Studio. Além disso, nenhuma das soluções acima, na verdade, parece que baixar um "tools.jar" ... apenas não vem com o JRE)
Erik Aronesty

Trabalhou para mim também. Eu criei um gradle.properties na raiz do projeto contendoorg.gradle.java.home=E:\\Android Studio\\jre
br4nnigan

3

Linux

Abra /etc/environmentem qualquer editor de texto como nano ou gedit e adicione a seguinte linha:

JAVA_HOME="/usr/lib/jvm/open-jdk"

janelas

  1. Inicie o miniaplicativo Painel de controle do sistema (Iniciar - Configurações - Painel de controle - Sistema).
  2. Selecione a guia Avançado.
  3. Clique no botão Variáveis ​​de ambiente.
  4. Em Variáveis ​​do sistema, clique no botão Adicionar e depois nas seguintes linhas:

    em Nome da variável: JAVA_HOME

    em valor variável: C:\Program Files\Java\jdk1.x.x_xxx

    onde a x.x_xxxversão do jdk você pode obter sua versão do jdk daquiC:\Program Files\Java

  5. Em Variáveis ​​do sistema, selecione Caminho, clique em Editar, clique em novo botão e depois na seguinte linha:

    %JAVA_HOME%/bin;


Os caminhos podem variar um pouco. No Fedora, isso funcionou para mim comJAVA_HOME="/usr/lib/jvm/java-openjdk"
rvf

3

Isso funcionou para mim:

Eu estava recebendo mensagem

Falha na execução da tarefa ': app: compileDebugJavaWithJavac'.

Não foi possível encontrar o tools.jar. Verifique se C: \ Arquivos de programas \ Java \ jre1.8.0_121 contém uma instalação válida do JDK.

  • No Android Studio, verifique seu local do SDK.
  • Arquivo, Estrutura do projeto, Local do SDK, Local do JDK.
  • Exemplo: C: \ estúdio-android \ estúdio-android \ jre
  • Copie o arquivo tools.jar na pasta C: \ android-studio \ android-studio \ jre \ lib na pasta C: \ Arquivos de Programas \ Java \ jre1.8.0_121 \ lib.
  • Repetir.

3

Se você usa o terminal para compilar e tem esse erro, pode apontar para o jdk incluído no android studio no seu gradle.propertiesarquivo:

org.gradle.java.home=/usr/local/android-studio/jre

2

Como outras respostas, defino a propriedade org.gradle.java.home no arquivo gradle.properties . Mas o caminho com \ separadores não funcionou (baseado no Windows 10):

O Java home fornecido via 'org.gradle.java.home' é inválido. Diretório inválido: C: Program FilesJavajdk1.8.0_65

Então, ao invés de

org.gradle.java.home = C: \ Arquivos de Programas \ Java \ jdk1.8.0_65

eu tive que usar

org.gradle.java.home = C: / Arquivos de Programas / Java / jdk1.8.0_65

então a compilação foi bem sucedida

O problema é que o projeto é construído com o JRE em vez do JDK e, como eu o construí a partir do eclipse, isso também funcionou:

  • Em Janela> Preferências> Gradle> Argumentos, especifique JRE da área de trabalho e especifique seu JDK.
  • Em Janela> Preferências> Java> InstalledJREs, especifique seu JDK como padrão



1

Você garantiu que o tools.jar o fizesse no caminho da classe de compilação? Talvez o caminho esteja incorreto.

task debug << {
    configurations.compile.each { println it }
}

Sim, ele chegou ao caminho da classe, mas ainda está recebendo o problema.
Abhishek Gupta

1

Adicionar o caminho JDK através da guia JAVA_HOME em "Open Gradle Run Configuration" resolverá o problema.


0

Eu tentei a maioria das opções principais, mas parece que havia algo errado com a configuração do meu ambiente para que elas não ajudassem. O que resolveu a questão para mim foi re-instalar jdk1.8.0_201 e jre1.8.0_201e isso resolveu o erro para mim. Espero que ajude alguém.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.