Nenhum compilador é fornecido nesse ambiente. Talvez você esteja executando um JRE em vez de um JDK?

633

Estou compilando um projeto no Eclipse usando o m2eclipse. Defino o caminho JDK no Eclipse assim:

Windows-->preferences-->installed jres--> jdk1.7.xx  path

Mas isso está mostrando um erro

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE    rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.424s
[INFO] Finished at: Tue Oct 29 15:21:01 IST 2013
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-   plugin:3.1:compile (default-compile) on project TEST-WEB: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
Sai prateek
fonte
1
como você está iniciando a compilação? Linha de comando? Ferramenta Eclipse?
Joeri Hendrickx
da ferramenta eclipse Configuração da execução -> Objetivos: instalação limpa
Sai prateek
possível duplicata do erro de compilação do pacote Maven
mlt
7
Ei, esse erro está chegando porque o Maven está tentando obter o JDK, mas no eclipse está apontando para o JRE. Você pode alterar o caminho para o JDK e ele funcionará. Confira abaixo post que irá ajudá-lo learn-automation.com/...
Mukesh otwani
Estou postando o link para que alguém no futuro seja beneficiado como eu. stackoverflow.com/a/33873838/4525120
divine

Respostas:

983
  1. No IDE do Eclipse, acesse Janela > Preferências > Java > JREs Instalados > e verifique os JREs instalados . Você deve ter uma entrada com um JDK lá.
  2. Selecione o Env Execution como mostrado abaixo. Clique em OK
  3. Em seguida , clique com o botão direito do mouse em seu projeto -> Maven -> Atualizar projeto

Além disso, pode ser necessário alterar o Maven JRE (consulte a resposta @ jlars62) da seguinte forma. Vá para Executar -> Executar configurações, selecionando o Maven Build que eu estava executando (no painel esquerdo). Em seguida, cliquei na guia JRE e selecionei a opção JRE padrão da área de trabalho

insira a descrição da imagem aqui

jaipster
fonte
15
@jaipster Eu tentei fazer isso, mas não consegui encontrar o jdk no painel esquerdo, só consigo ver o jre7. Você sabe por quê?
diyoda_
4
Pode ser que você não tenha o jdk7 instalado na sua máquina ou não esteja configurado no eclipse. Você pode confirmar.
jaipster
52
@ Diode eu tive o mesmo problema. Eu fui para "JREs instalados" e cliquei em "Adicionar ..." A partir daí, naveguei até C: \ Arquivos de programas \ Java \ jdk1.7.0_XX e depois pude selecionar o jre como o jaipster descrito.
Jlunavtgrad
7
Para mim, bastava adicionar o JDK à lista de "JREs instalados" (não é a melhor nomeação ...) e marcar a caixa de seleção ao lado da nova entrada do JDK, tornando-a a VM padrão.
Tom Fink
7
Cliquei no botão "Pesquisar" no menu "JREs instalados". O Eclipse pesquisou uma das unidades para as quais eu apontei e saiu com todos os JREs e JDKs instalados.
A Mitra Boy
141

Para mim, é exatamente o que o maven do eclipse reclama

insira a descrição da imagem aqui

Então, pressiono o Editbotão e mudo o caminho para a pasta JDK, limpo o projeto e tudo começa a funcionar

Thai Tran
fonte
3
Prefiro adicionar o JRE usando o botão "Adicionar" e depois manipular uma entrada do JRE para se tornar uma entrada do JDK! E depois de adicionar o JDK, clique na caixa de seleção ao lado da entrada JDK. Isso já deve resolver os problemas descritos nesta postagem.
Tom Fink
3
Isso é estranho . porque, como mostra o título da caixa de diálogo, isso deve colocar a Installed JREspasta em vez de jdk. Mas realmente me resolveu o problema. Obrigado
Joe.wang
É weired o título está instalado JREs mas caminho é JDK mas de qualquer maneira ele funciona graças
Abhijit Chakra
É uma boa ideia remover o JRE após adicionar o JDK. Às vezes, o Eclipse continua usando o JRE independentemente - não faz ideia do porquê. Tornar o JDK a única opção disponível ajuda. :)
leftbit 24/10
128
  1. Defina a JAVA_HOMEvariável de ambiente para a pasta raiz do JDK - necessária se você executar a linha de comandos ou o maven ( mvn).
    • (Pesquise no google JAVA_HOMEpor mais informações)
  2. Nas propriedades do projeto na seção Java Compiler, selecione o JDK necessário - se você executar diretamente no eclipse
msangel
fonte
Por que a etapa 1 é necessária?
Duncan Jones
2
@DuncanJones, primeiro é necessário se você executar linha de comando ou maven (google para esta variável), o segundo - se você executar diretamente do eclipse,
msangel
1
Eu acrescentaria essa informação à sua resposta. Caso contrário, sugere que ambos são necessários em todos os casos.
Duncan Jones
10
Preste atenção que o JAVA_HOME não termina com "bin", mas aponta para a raiz do JDK.
koppor
Precisava disso para a liberação-plugin como ele não usa as configurações JRE de eclipse (com instalação maven externo) ...
Rob
124

Para mim, nada funcionou até que eu fiz essa alteração no meu pom.xml:

<build>
...
    <plugins>
    ...
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <fork>true</fork>
                <executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

Outras notas

Pude ver que o m2e estava sendo executado em um JRE, não no JDK. Nada do que fiz mudou isso, incluindo a inclusão no eclipse.ini:

-vm
C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe

No final, nunca consegui que o m2e fosse executado em um JDK, mas configurar explicitamente o compilador Java (como acima).

ksnortum
fonte
10
Essa solução deve ser implementada como último recurso, pois o próprio projeto é modificado para ser acoplado à sua máquina atual de desenvolvimento.
Xtreme Biker
@ksnortum thanks! essa é a única coisa que fez funcionar para mim.
Antony Fuentes Artavia
E quanto a nós, linux, aqui?
logicbloke
Eu suspeito que é praticamente o mesmo, exceto que o executável seria / path / to / java / bin / javac. Talvez tente 'qual java` para encontrar o seu caminho Java.
Ksnortum
41

No meu caso, foi resolvido fazendo o seguinte:

Vá para sua 'Configuração de tempo de execução' e configure seu JRE para um JDK.

Selecione o JDK certo para o seu tempo de execução

Selecione o JRE padrão

Copiei a resposta caso ela seja excluída por algum motivo, mas a fonte está aqui

Eduardo Dennis
fonte
Isso funcionou para mim. Se o JDK não for exibido no menu suspenso JRE alternativo, você precisará adicionar o JRE instalado (navegue até a pasta em que o JDK está instalado) e selecione a pasta JDK.
Atul
Este foi o meu problema, obrigado pela sua resposta que foi resolvida.
Amr Afifi
38

Eu estava recebendo esse erro ao tentar fazer uma compilação maven a partir do eclipse.

Para mim, a resposta foi Run-> Run Configurations, selecionando o que Maven Buildeu estava executando (no painel esquerdo). Depois, cliquei na JREguia e selecionei a opçãoWorkspace default JRE

jlars62
fonte
1
Parece ser necessário verificar além da resposta selecionada acima.
Nsandersen
1
Eu gosto mais desta solução, pois ela não altera a versão java padrão para outros projetos.
Gonen I
30

Vá para windows -> Preferências -> Java -> JREs instalados

pode ser jre já está adicionado insira a descrição da imagem aqui

clique em Adicionar -> VM padrão -> Próximo -> Diretório

e procure o JDK no meu caminho C:\Program Files\Java\jdk1.8.0_111

depois clique em terminar.

você verá uma janela como estainsira a descrição da imagem aqui

selecione JDK -> Aplicar -> Ok

E você terminou.

GauRang Omar
fonte
1
Obrigado por compartilhar o caminho do JDK. Parecia que as pessoas podiam escolher outra opção para clicar no JDK quando eu só tinha o JRE exibido desde o início. Adicionei o JDK a partir do caminho que você forneceu.
In-young Choung
19

Eu tenho o mesmo problema e apenas adiciono JAVA_HOMEàs variáveis ​​de ambiente .

env var

  • Se você estiver usando o eclipse, consulte https://stackoverflow.com/a/21279068/6097074
  • Se você estiver usando intellij, logo após adicionar JAVA_HOMEo prompt de comando aberto do diretório do projeto e execute mvn clean install(não use o terminal intellij).
ankit
fonte
14

No entanto, tentei todas as opções acima, ainda recebendo a mesma mensagem de erro.

No meu caso, um JRE real foi usado incorretamente como JRE System Library no caminho de construção específico do projeto que obviamente estava substituindo todas as outras configurações discutidas aqui.

Nesse caso, tente o seguinte:

  1. Abra as bibliotecas específicas do projeto do Java Build Path: Clique com o botão direito do mouse em "Projeto> Build Path> Configure Build Path ..." e selecione a guia "Libraries".
  2. Selecione a entrada "Biblioteca do sistema JRE" e pressione "Remover".
  3. Clique em "Adicionar biblioteca ...".
  4. Um assistente aparece. Selecione "Biblioteca do sistema JRE" e clique em "Avançar>".
  5. Agora selecione o JDK correto (no meu caso "Workspace default JRE", que eu configurei usando um JDK).
  6. Feche o assistente pressionando "Concluir".
  7. Feche a caixa de diálogo "Propriedades" pressionando "OK".
Sir Hackalot
fonte
1
Eu tentei todas as opções acima mencionadas por @ishu, mas ainda obtendo org.apache.maven.lifecycle.LifecycleExecutionException: falha ao executar o objetivo org.apache.maven.plugins: maven-compiler-plugin: 3.1: compile (compilação padrão) no projeto hibernateTest1: Falha na compilação, tentei sua solução, mas nenhuma alteração no erro ... Por favor, me ajude.
Namrata Choudhary
Adicione <build> <sourceDirectory>flockWebclient</sourceDirectory> <resources> <resource> <directory>resources</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>seu pom.xml
Alekya
11

Uma alternativa se a resposta do jaipster não funcionar é acessar:
Janela> Preferências> Java> JREs Instalados

Em seguida, edite o jre para que aponte para o jdk e não para o jre (a página inicial do jre arquivada no editor de pacotes jre)

Isso funcionou para mim.

brunoais
fonte
para mim, chega. Engraçado é que às vezes eu recebo erros que o JRE padrão está erroneamente apontando para um JDK.
Salsero69
trabalhou para mim, eu quero fazer instalação limpa maven compilar
asifaftab87
10

Se você estiver executando o Mavencomando cmd, certifique-se de definir o caminho do jdk antes de executar o comando. No meu caso, eu criei um .batarquivo contendo o seguinte:

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60
start cmd.exe /k "cd c:\aem_proj\sis\aau"
Mahder
fonte
8

Eu enfrentei o mesmo problema ao tentar criar um arquivo jar do meu aplicativo de projeto usando mvn clean install, embora o aplicativo estivesse funcionando bem durante a execução do Eclipse.

O problema era, de fato, muito ingênuo, porque eu não havia definido a variável de ambiente JAVA_HOME . Tudo o que eu precisava fazer era definir a variável de ambiente JAVA_HOME como diretório JDK, verifique se não é até "\ bin" e sem ponto e vírgula ";" .

insira a descrição da imagem aqui

Como eu entendi é como:

O aplicativo funcionou bem no Eclipse, pois o JRE System Library estava se referindo ao JRE dentro da pasta JDK, em vez da pasta JRE externa sem o JDK. [Como explicado muito bem em outras respostas]

Essa configuração não se aplica ao comando maven que executamos no prompt de comando. Ele ainda procurará a variável JAVA_HOME para acessar a biblioteca do Sistema JRE e, quando não for encontrada, refere-se à pasta JRE externa sem o JDK.

Dhaval Simaria
fonte
6

Existem várias opções para especificar.

Etapas: Bem no projeto, no explorador de projetos Vá para Executar-> Executar configuração -> Clique em Maven Build -> Clique na sua configuração de compilação / ou crie uma nova configuração. Você verá a janela como o instantâneo fornecido abaixo, clique na guia JRE lá.

Você vê 3 opções: 1) JRE padrão da área de trabalho 2) Ambiente de execução 3) JRE alternativo insira a descrição da imagem aqui 1) O JRE padrão da área de trabalho é definido no menu 'Janela' na parte superior -> Preferências -> Java -> JREs instalados - Aqui você pode adicionar seu jdk insira a descrição da imagem aqui 2) Ambiente de execução O jdk pode ser definido no pom.xml, conforme mencionado por @ksnortum

<build>
<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <fork>true</fork>
            <executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe</executable>
        </configuration>
    </plugin>
</plugins>

3) O JRE alternativo pode ser usado para selecionar um jdk do seu diretório

manntsheth
fonte
5

Para mim, o JRE estava na variável de ambiente PATH antes do caminho do JDK

  1. C: \ ProgramData \ Oracle \ Java \ javapath
  2. C: \ env \ jdk1.8.0_151 \ bin

Então eu removi 1. Provavelmente, trocá-los também resolveria.

Florin D
fonte
5

Minha resposta pertence ao ambiente Eclipse no Windows.

Eu fui para Preferências -> Java -> JREs instalados. NÃO vi o JDK aqui. Eu só vi o JRE aqui. Então, adicionei o JDK e desmarquei o JRE. Em seguida, verifiquei o JDK. Depois, executei o arquivo POM usando Configurações de Execução. Escolha a aba JRE e selecione a opção "Área de trabalho padrão ..." Aqui estão as imagens

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Krishna Rajagopalan
fonte
5

Declaração do problema = Nenhum compilador é fornecido neste ambiente. Talvez você esteja executando um JRE em vez de um JDK? intellij

Solução

Defina a variável de ambiente como abaixo para resolver o problema

Nome da variável : JAVA_HOME

Valor da variável : C: \ Arquivos de programas \ Java \ jdk1.8.0_202

Nome da variável : M2_HOME

Valor da variável : C: \ Arquivos de Programas \ apache-maven-3.6.0

Além disso , adicione o caminho Java e maven em " Variáveis ​​do sistema ", como abaixo:

  1. C: \ Arquivos de programas \ Java \ jdk1.8.0_202 \ bin

  2. C: \ Arquivos de programas \ apache-maven-3.6.0 \ bin

Navdeep Ghotra
fonte
3

Há outra resposta possível para essa pergunta, e eu posso ser a única pessoa tola o suficiente para ter tropeçado nisso, mas acho que vale a pena acrescentar, pois nenhuma das outras respostas foi aplicada porque eu já tinha essas configurações corretas.

Quando você instala um JDK, o instalador pergunta onde você deseja instalar os arquivos. Por padrão, no Windows, é algo como C: \ Arquivos de Programas \ Java \ jdk1.8.0_74 (ou qualquer versão que você esteja instalando).

Em seguida, ele solicita um diretório para instalar o JRE, que por padrão é algo como C: \ Arquivos de Programas \ Java \ jre1.8.0_74.

Observe que um é o jdk 1.8.0_74 e o outro é o jre 1.8.0_74

Eu estava com pressa e, pensando que o instalador estava me fazendo a mesma pergunta duas vezes, defina meus locais de instalação do JDK e JRE como D: \ devtools \ jdk \ jdk1.8.0_74, resultando no instalador substituindo o JDK pelo JRE. Isso resultou em (entre outras coisas) um javac.exe ausente na minha bandeja do JDK e o mesmo erro que o OP relatou aqui em todas as minhas compilações de maven.

Sam
fonte
3

Eu tenho uma solução.

A solução mais comum para esse problema é alterar o local do jdk como meus JREs instalados em vez do local do JRE, mas isso não resolveu o meu problema desta vez.

Então eu fiz o abaixo para resolver o problema. Expanda a guia JREs instalados e você encontrará uma guia Ambientes de execução .

Clique no seu ambiente de execução favorito. No meu caso, foi o JAVASE-1.8 . Lá mostra 2 opções. JDK e JRE . Selecione JDK lá e o problema foi resolvido.

insira a descrição da imagem aqui

Vero J
fonte
2

Acabei de perder 3 horas com esse problema até conseguir fazê-lo funcionar. Eu tive esse erro no Terminal Eclipse ao emitir um comando de compilação mvn:

Nenhum compilador é fornecido nesse ambiente. Talvez você esteja executando um JRE em vez de um JDK?

Então, li aqui que preciso criar uma nova variável de sistema chamada JAVA_HOME e apontá-la para a pasta de instalação do jdk. No entanto, isso gerou outro erro:

A opção de origem 1.5 não é mais suportada. Use 1.6 ou posterior

Não foi possível encontrar uma correção para este, então ...

Portanto, a solução para fazer tudo desaparecer é instalar o Java SE Development Kit 8! Eu estava usando 9 pensando que se é o mais recente deve ser melhor ...

De qualquer forma...

  1. Desinstale todas as versões java do seu computador
  2. Instale o JDK8 a partir daqui: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  3. Em seguida, defina o valor ambiental do sistema JAVA_HOME - tutorial aqui: https://docs.oracle.com/cd/E19509-01/820-3208/inst_cli_jdk_javahome_t/

  4. Reinicie o Eclipse e divirta-se! (pelo menos foi o que eu fiz)

Esperando que isso poupe algum andarilho pobre de algum problema.

JustNatural
fonte
2

No meu caso, eu tinha o caminho da variável do sistema com a localização "C: \ ProgramData \ Oracle \ Java \ javapath".

No local "C: \ ProgramData \ Oracle \ Java \ javapath" java, javaw apenas lá. Então, eu estou recebendo o mesmo erro.

Depois que removi todos os arquivos da pasta "C: \ ProgramData \ Oracle \ Java \ javapath", meu erro foi resolvido.

Rajá
fonte
2

Eu tentei a maioria das respostas sem sucesso. O que funcionou para mim foi (depois de seguir https://stackoverflow.com/a/21279068/2408893 ):

  • clique com o botão direito do mouse em projeto -> Propriedades
  • selecione Caminho de Construção Java
  • selecione a biblioteca do sistema JRE
  • clique em editar
  • No ambiente de execução, selecione um jdk

insira a descrição da imagem aqui

  • clique em Concluir
  • construir e executar
Emile Maras
fonte
2

Embora a pergunta seja sobre o erro na Eclipseinstalação, mas pensei que uma resposta para corrigir esse erro com a IntelliJinstalação do Windows 10 também pode ser útil aqui.

1 . Vá para File-> Settings-> Build, Execution, Deployment-> Build Tools-> Maven->Importing

2 . Definido JDKpara Importerconforme mostrado abaixo paraJAVA_HOME

insira a descrição da imagem aqui

Também JAVA_HOMEdeve ser definido como JDKcaminho em Variáveis ​​de ambiente -> Variáveis ​​do sistema e também deve ser adicionado %JAVA_HOME%\binàs variáveis ​​do sistema de caminho

Nafeez Quraishi
fonte
1

Eu enfrentei o mesmo problema, o erro que cometi foi adicionar o caminho jre apenas no caminho var, não o caminho jdk. Quando o caminho jdk foi adicionado ao caminho e criar o projeto maven, seu trabalho está perfeito.

Sapna
fonte
1

Eu fiz a seguinte alteração e funcionou para mim. Espero que ajude alguém.insira a descrição da imagem aqui

Kunal Khaire
fonte
1

Tente isso.

<build>
...
    <plugins>
    ...
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <fork>true</fork>
                <executable> path to jdk \bin\javac.exe</executable>
            </configuration>
        </plugin>
    </plugins>
</build>
Wagh
fonte
1

Eu estava recebendo o mesmo erro quando criei uma nova instância do EC2 ubuntu 16.04 com o Java já instalado e enquanto executava o pacote mvn clean, encontrei esse problema e a solução abaixo funcionou para mim.

Se você estiver trabalhando em um servidor Ubuntu, poderá tentar instalar o Java novamente e, para isso, poderá usar esta resposta Como instalar o JDK no Ubuntu Linux

Ishan Ojha
fonte
1

No Windows 7 - 64 bits, há um problema de permissões que impede o instalador de descompactar o arquivo C: \ Arquivos de Programas \ Java \ jdk1.6.xx \ lib \ tools.jar no seu local. Esse arquivo jar é usado pelo maven-compiler-plugin versão 3.x, em vez do javac usual

Solução: execute, como administrador, o instalador do Java JDK! E verifique se o tools.jar está em C: \ Arquivos de Programas \ Java \ jdk1.6.xx \ lib \

Caso esteja usando o plugin de integração m2e maven, você deseja ver o arquivo visível para o Eclipse através das seguintes etapas dentro do Eclipse:

Vá para Janela -> Preferências -> Java -> JREs instalados Selecione o JDK que você está usando (C: \ Arquivos de Programas \ Java \ jdk1.6.xx) Pressione Editar para ver a lista de jars, incluindo tools.jar, OU você pode adicione-o como Adicionar JAR externo. Em seguida, configure a execução do maven através destas etapas:

Executar-> Executar configurações-> Preencher Nome, Diretório Base e Metas. Na mesma janela, vá para a guia JRE e aponte para JDK \ jdk1.6.xx \

Parthiban
fonte
0

Além da resposta acima, eu poderia dizer que apenas tente executar o Maven a partir do terminal (fora do Eclipse). Dessa maneira, se for construído de fora, mas não no Eclipse, você poderá entender que o problema deve estar no Eclipse.

Ao infinito
fonte
0

Existem várias respostas sobre esta pergunta, mas todas estão relacionadas à configuração do caminho correto do JDK, mas somente com o JRE podemos resolver esse problema.

Nós apenas precisamos usar o assembly de implantação para configurar o caminho do arquivo de guerra empacotado do Projeto Java EE e, em seguida, executar novamente a instalação maven.

Etapas para fazer uso do conjunto de implantação:

  1. Clique com o botão direito do mouse no projeto Jave EE -> clique em Propriedades -> clique em Deployment Assembly

  2. Clique no botão Adicionar -> Clique em Arquivos no Sistema de Arquivos -> Clique no próximo -> Clique em Adicionar -> Vá para o diretório .m2 \ respository e procure o arquivo de guerra gerado -> Selecionar arquivo de guerra -> Clique no botão Abrir -> Clique em Aplicar -> OK

  3. Clique com o botão direito do mouse no projeto -> clique em Maven Install em Run As

Isso criará seu projeto com sucesso, sem nenhum erro do compilador.

Espero que isso resolva o problema sem o JDK.

S Kumar
fonte