Tenho seguido o tutorial de introdução, mas estou preso depois de importar o projeto playn usando o Maven. Estou usando o Eclipse Indigo em execução no Windows 7 de 64 bits.
Todos os projetos importados apresentam o mesmo erro:
Missing Artifact com.sun:tools:jar in all the pom.xml files.
Depois de algumas horas pesquisando nos fóruns, tentei:
Instalando o Java 1.6.029 mais recente Alterando minha JAVA_HOME
variável de ambiente para apontar para \program files\Java\jdk1.6_029
Alterando minhas preferências do Eclipse Java para usar o JRE jdk1.6_029
.
Eu realmente gostaria de experimentar o playn, mas por que existem alguns posts, não consigo encontrar uma resposta consensual sobre a solução. Algumas pessoas dizem que a Sun removeu algo do jdk de 64 bits, outras dizem que você deve editar seus arquivos xml, muitas pessoas disseram que você alterou o seu JAVA_HOME
e outras disseram que você deve alterar suas opções de VM para o Eclipse.
Qualquer ajuda em esclarecer isso seria apreciada e possivelmente útil para muitos, uma vez que não tenho uma configuração particularmente estranha aqui.
(editar) Aqui está o pom.xml do primeiro projeto. O Eclipse sinaliza um erro na linha que diz:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.googlecode.playn</groupId>
<artifactId>playn-project</artifactId>
<version>1.1-SNAPSHOT</version>
</parent>
<artifactId>playn-android</artifactId>
<name>PlayN Android</name>
<packaging>jar</packaging>
<repositories>
</repositories>
<dependencies>
<dependency>
<groupId>com.googlecode.playn</groupId>
<artifactId>playn-core</artifactId>
<version>${project.version}</version>
</dependency>
<!-- needed because Android uses the same JSON code as playn-java;
that should be factored into a library shared by both backends -->
<dependency>
<groupId>com.googlecode.playn</groupId>
<artifactId>playn-java</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>${android.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
</build>
</project>
Respostas:
Acabei de postar esta questão sobre esse mesmo problema e como resolvi, mas vou colar (e expandir) aqui também, pois parece mais relevante.
Eu tive o mesmo problema ao usar o Eclipse no Windows 7, mesmo quando removi o JRE da lista de JREs nas configurações do Eclipse e apenas tinha o JDK lá.
O que acabei tendo que fazer (como você mencionou em sua pergunta) foi modificar a linha de comando do atalho que uso para iniciar o Eclipse para adicionar o argumento -vm a ele assim:
-vm "T:\Program Files\Java\jdk1.6.0_26\bin"
Claro, você iria ajustar que para apontar para o diretório bin de seu JDK instalar. O que isso faz é fazer com que o próprio Eclipse seja executado usando o JDK em vez do JRE, e então ele é capaz de localizar o
tools.jar
corretamente.Eu acredito que isso tem a ver com como o Eclipse encontra seu JRE padrão quando nenhum é especificado. Acho que ele tende a preferir o JRE ao invés do JDK (por que, não sei) e vai para o primeiro JRE compatível que encontrar. E se ele está saindo das chaves de registro do Windows, como a resposta de Vladiat0r sugere, ele procura a
HKLM\Software\JavaSoft\Java Runtime Environment
chave primeiro, em vez daHKLM\Software\JavaSoft\Java Development Kit
chave.fonte
javaw.exe
a esse caminho também (portanto, na íntegra-vm "T:\Program Files\Java\jdk1.8.0_66\bin\javaw.exe"
:);Tive o mesmo problema ao desenvolver um aplicativo de serviço da web simples, no meu caso, tive que adicionar um plug-in codehous para obter bibliotecas jaxws. No entanto, maven pom continuou perguntando sobre o arquivo jar de ferramentas.
Devo dizer que os comentários acima estão corretos, você pode incluir a entrada abaixo no arquivo pom:
<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath> </dependency>
Mas, o que acontecerá quando você precisar implantar em uma instância de produção? Você poderia substituir o caminho por uma referência a uma variável de ambiente do sistema, mas isso ainda não parece bom, pelo menos para mim.
Encontrei outra solução em um comentário StackOverflow:
Problema de artefato Maven 3
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts2.version}</version> <exclusions> <exclusion> <artifactId>tools</artifactId> <groupId>com.sun</groupId> </exclusion> </exclusions> </dependency>
Eles sugerem incluir uma declaração de exclusão para o jarro de ferramentas e funciona. Resumindo: você pode incluir uma regra de exclusão em sua dependência e evitar o problema de tool.jar:
<exclusions> <exclusion> <artifactId>tools</artifactId> <groupId>com.sun</groupId> </exclusion> </exclusions>
fonte
pom.xml
não funciona para mim.Encontrei o mesmo problema e a maneira como consegui resolvê-lo foi adicionando o local de dependência de
tools.jar
aopom.xml
. Igual a:<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath> </dependency>
Certifique-se de alterar o
<systemPath>
para onde o arquivo tools.jar está localizado.fonte
Nenhuma das outras respostas fez isso por mim. O que fiz foi verificar a existência de "Hierarquia de dependência" do pom.xml no eclipse, onde fornecer um filtro 'ferramentas' revelou que eu tinha uma dependência real para tools.jar:
Então, o culpado para mim foi este:
<dependency> <groupId>com.github.markusbernhardt</groupId> <artifactId>robotframework-selenium2library-java</artifactId> <version>1.4.0.7</version> <scope>test</scope> </dependency>
Adicionar uma exclusão corrigiu:
<dependency> <groupId>com.github.markusbernhardt</groupId> <artifactId>robotframework-selenium2library-java</artifactId> <version>1.4.0.7</version> <scope>test</scope> <exclusions> <exclusion> <artifactId>tools</artifactId> <groupId>com.sun</groupId> </exclusion> </exclusions> </dependency>
A exclusão não parece ter desvantagens.
fonte
O mesmo comigo e com o Windows 7. Acabei adicionando duas linhas para
eclipse.ini
:-vm C:\Program Files\Java\jdk1.6.0_35\bin
Tentei usar
%JAVA_HOME%
lá, mas não deu certo.fonte
-vmargs
linha, como qualquer coisa passada que será interpretada como argumentos de inicialização da VM. Então: um pouco antes disso!-vm
antes do-vmargs
é a chave !. Obrigado!Resolvi esse problema nas configurações do Eclipse 4.3 - apenas adicionando bibliotecas JDK às bibliotecas JRE.
Vá para windows -> configurações -> Java -> JREs instalados -> selecione JDK e clique em Editar -> clique em Adicionar JARs externos e adicione tools.jar (colocado em JDK / lib)
fonte
Verifique a versão do JDK em sua máquina e em
pom.xml
ambas deve ser a mesma<dependency> <groupId>sun.jdk</groupId> <artifactId>tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>C:\Program Files\Java\jdk1.8.0_192\lib\tools.jar</systemPath> </dependency>
fonte
Se o problema persistir, pode ser devido a um JDK de versão igual ou superior a 11.
O
tools.jar
arquivo foi removido da pasta lib nesses JDKs (veja esta resposta para uma pergunta semelhante). Nesse caso, tente usar outras versões das bibliotecas, que não dependem dacom.sun:tools
biblioteca.fonte
Depois de lutar por um tempo, finalmente consegui trabalhar com isso em
eclipse.ini
vez da linha de comando. Depois de finalmente ler a documentação , percebi que o argumento -vm deve estar em uma linha separada, não citada, e à frente de qualquer -vmargs:-vm C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe
fonte
Recebi um erro semelhante. Isso ocorre porque o JDK não está configurado corretamente no eclipse. O pepino precisa do JDK junto com o JRE, portanto, adicione a dependência abaixo em seu pom.xml
<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:\Program Files\Java\jdk1.8.0_101\lib\tools.jar</systemPath> </dependency>
fonte
Na guia POM efetiva dos arquivos pom, vejo o seguinte caminho derivado:
C:\Program Files\Java\jre6/../lib/tools.jar
e acho que não é um caminho válido no Windows. Tentei copiar o tools.jar na pasta jre6 / lib e também em Java / lib sem sucesso.O valor "C: \ Program Files \ Java \ jre6" vem do registro
E defina a chave JavaHome para onde seu jdk JRE está instalado. Então, todos os erros do compilador foram embora.
Reinstalar o JDK não resolveu. Definir a variável de ambiente do sistema JAVA_HOME ou java.home não ajudou.
A outra alternativa que vi é adicionar a dependência com o caminho certo em cada arquivo pom xml, mas o playn-samples tem muitos arquivos que é uma chatice ridícula de editar.
Este é o resultado efetivo do POM, que mostra o caminho ERRADO!
<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:\Program Files\Java\jre6/../lib/tools.jar</systemPath> <optional>true</optional> </dependency>
fonte
Adicione esta dependência no arquivo pom.xml. Espero esta ajuda.
Na
<systemPath>
propriedade, você deve escrever seu caminho de lib jdk.<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.4.2</version> <scope>system</scope> <systemPath>C:/Program Files/Java/jdk1.6.0_30/lib/tools.jar</systemPath> </dependency>
fonte
Acabou usando a correção eclipse.ini:
openFile -vm (Your Java Home JDK here)
Por exemplo
-vm C:\Java\JDK\1.6
,.Também foi necessário alterar o JRE para JDK:
No Eclipse IDE, vá para:
fonte
-vm
, coloque o caminho do Java SDK na linha nect e coloque todos os-vm
sinalizadores recém-adicionados antes de--vmargs
noeclipse.ini
arquivo.Como outros participantes afirmaram, o problema aqui tem a ver com o JRE que o eclipse está usando, não sendo capaz de localizar o jarro de ferramentas. Resolvi o problema indo em uma direção um pouco diferente do que foi dito acima, e foi por causa da forma como meus projetos e ambiente.
O Eclipse 4.5 requer pelo menos Java 7 para o tempo de execução, portanto, configurei meu sistema para usar um JRE Java 8 localizado em C: \ java \ jre1.8.0_45.
Em seguida, estou usando um arquivo POM que pressupõe que estou executando um Java 6 JDK.
<profiles> <profile> <id>default-profile</id> <activation> <activeByDefault>true</activeByDefault> <file> <exists>${java.home}/../lib/tools.jar</exists> </file> </activation> <properties> <toolsjar>${java.home}/../lib/tools.jar</toolsjar> </properties> </profile> <profile> <id>osx_profile</id> <activation> <activeByDefault>false</activeByDefault> <os> <family>mac</family> </os> </activation> <properties> <toolsjar>${java.home}/../Classes/classes.jar</toolsjar> </properties> </profile> </profiles> <dependencies> <dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6.0</version> <scope>system</scope> <systemPath>${toolsjar}</systemPath> </dependency> </dependencies>
Não tenho permissão para alterar o arquivo POM, então tive que fazer alguns truques. Copiei o tools.jar do meu Java 6 JDK, criei o diretório C: \ java \ lib e colei lá. Eu então reiniciei o eclipse e limpei meu projeto. E os erros do VOILA desapareceram.
Não é uma solução elegante, e eu pensaria que a solução adequada seria alterar a configuração do POM, mas como não consegui, funciona.
fonte
Se você estiver vendo isso em um sistema operacional recém-instalado / atualizado, é porque JAVA_HOME não está configurado corretamente.
precisamos definir JAVA_HOME corretamente. Por exemplo no mac: se eu quiser usar a versão java 1.8.0_261
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_261`
fonte
Tive o mesmo problema em um Windows 7 e Eclipse 3.7 consegui consertá-lo iniciando
Você pode iniciar um cmd e lançar o eclipse assim, ou pode editar seu atalho e adicionar -vm "D: \ JDK6 \ bin" como um argumento na "seção de destino".
Como nota lateral, também tentei adicionar -vm "D: \ JDK6 \ bin" ao eclipse.ini, mas não funcionou. E adicionar JRE6 não funcionará, uma vez que NÃO contém tools.jar em seu diretório "lib". Apenas o JDK o faz.
fonte
Depois de experimentar todos os itens acima, eu ainda estava tendo o mesmo problema.
Então tentei o seguinte,
Abra um prompt de comando e digite java -version. Ele me mostrou um JRE versão 1.8.
Abra um prompt de comando e acesse o local do diretório bin do JDK 1.7 e digite java -version. Desta vez, ele mostrou corretamente 1.7.
Então, depois de pesquisar alguns lugares, descobri que, além dos locais acima, existem locais adicionais para o Java runtime.
Registro
Também há uma chave de registro onde a localização do JRE é especificada em
Mudei as entradas aqui para apontar para o JDK 1.7
Dados do Programa
O diretório "C: \ ProgramData \ Oracle \ Java \ javapath" está presente na variável de ambiente PATH e contém atalhos para java, javaw etc ... O destino para esses atalhos eram todos JRE 1.8. ( Acho que esse foi o problema principal ). Alterei os atalhos para apontar para os exe JDK corretos.
Depois que tudo isso foi feito. Abri o eclipse e todos os erros jdk.tools pom.xml desapareceram.
fonte
Eu tenho esse problema e descobri que o JBossDevStudio 9.1 no Windows é um programa de 32 bits. O Eclipse e, portanto, o JBossDevStudio, não funciona com o tipo errado de JVM. O eclipse de 64 bits precisa de uma JVM de 64 bits, o eclipse de 32 bits precisa de uma JVM de 32 bits. Portanto, configurar o Eclipse para ser executado com meu JDK de 64 bits instalado não funcionou.
Instalar um JDK de 32 bits e executar o Eclipse a partir disso resolveu o problema.
Pelo menos para um dos meus projetos, um outro em que tentei configurar um JDK de tempo de execução nas propriedades do projeto Eclipse ainda está quebrado.
fonte
Resolvi o problema desinstalando o JRE do meu sistema e deixando apenas o JDK. Reinstalar JDK não é suficiente porque o instalador do Oracle JDK instala JDK e JRE
BTW, parece-me que este bug é responsável por problemas: java.home do Eclipse JRE é usado em vez do JRE de construção
fonte
No meu caso, estava executando o Maven Build a partir do Eclipse Run Configurations. Mesmo depois de alterar a configuração padrão do JRE para apontar para a pasta de instalação do JDK, o problema não foi corrigido para mim. O motivo é que há uma guia JRE no Maven Build - Run Configuration (veja a imagem abaixo). E ainda estava apontando para a minha instalação do JRE. Mudei para apontar para a instalação do JDK e, em seguida, executei o Maven Build. Desta vez, funcionou. insira a descrição da imagem aqui
fonte
Vamos entender por que esse problema aconteceu:
O comando Maven "mvn -version" retorna acima da saída.
Podemos ver que o maven obtém o caminho do tempo de execução java como "C: \ Arquivos de programas \ Java \ jre1.8.0_221" se você não especificar a variável de ambiente JAVA_HOME. E então o maven assume que esse caminho é JAVA_HOME. É por isso que ao construir o aplicativo a partir do prompt de comando ou de qualquer IDE, o maven procura o arquivo tools.jar no caminho "% JAVA_HOME% .. \ lib \ tools.jar".
tools.jar está presente no caminho JDK, portanto, precisamos mencionar isso ao maven antes de usá-lo. Hoje em dia as máquinas são construídas com o jre já disponível, mas o jdk só é necessário para o desenvolvimento. Essa pode ser a razão pela qual o maven escolhe o caminho jre automaticamente.
Para obter mais ajuda, leia o código mvn.cmd disponível no caminho de instalação do maven.
fonte
O problema é que o sistema não consegue encontrar o arquivo tools.jar
Portanto, primeiro verifique se o arquivo está lá na instalação do JDK do diretório.
Faça a entrada abaixo em POM.xml conforme apontado corretamente por outros
<dependency> <groupId>com.sun</groupId> <artifactId>tools</artifactId> <version>1.6</version> <scope>system</scope> <systemPath>C:\Program Files\Java\jdk1.8.0_241\lib\tools.jar</systemPath> </dependency>
em seguida, siga as etapas abaixo também para remover o problema
1) Clique com o botão direito no seu projeto
2) Clique em Build path
Conforme a imagem abaixo, selecione o JRE padrão da área de trabalho e clique em Concluir.
fonte
Alterar 'JREs instalados' em 'Preferências -> Java -> JRE instalado' para JDK inicial funcionou para mim.
Para sua informação - estou usando o JDK 1.8.
fonte
Alterar a localização relativa de
${java.home}/../lib/tools.jar
para o caminho absoluto deC:\Program Files\Java\jdk1.6.0_29\lib\tools.jar
obras para mim.Você só deve alterá-lo no
playn/pom.xml
.Agora, para os exemplos de reprodução, Vladiator está certo, são muitos arquivos pom para alterar.
fonte