Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Falha na compilação com Maven

Olá pessoal,

Estou tendo problemas para compilar duas classes simples: Uma com getters e setters e outra com o Main para execução.

Procedimento: Botão direito sobre pom.xml -> Run As -> Maven install.

Segue abaixo trecho do erro:

[INFO] Scanning for projects... [INFO][INFO] ------------------------------------------------------------------------ [INFO] Building produtos 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ produtos --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory C:\Users\bruno.joao\eclipse-workspace\produtos\src\main\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ produtos --- [INFO] Changes detected - recompiling the module! [INFO] Compiling 1 source file to C:\Users\bruno.joao\eclipse-workspace\produtos\target\classes [INFO] ------------------------------------------------------------- [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: 0.571 s [INFO] Finished at: 2018-06-21T10:10:17-03:00 [INFO] Final Memory: 9M/232M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project produtos: Compilation failure [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

6 respostas

Oi Bruno,

Pela mensagem de erro o problema é que no seu Eclipse está instalado o JRE, ao invés do JDK.

Para utilizar o Maven é obrigatório utilizar o JDK.

Verifique se no seu computador está instalado o JDK(se nao tiver, você precisa baixar do site da Oracle e instalar).

Se tiver instalado, precisa alterar no Eclipse para utilizar a JDK, indo no menu: Window -> Preferences -> Java -> Installed JREs, e alterar o caminho para a pasta JDK, dentro do diretório onde está instalado o Java no seu computador.

https://i.stack.imgur.com/IFJjj.png

Veja se consegeu resolver.

Olá Rodrigo tudo bem?

Através desta tela que voce postou a imagem, só aparece o JRE. No entanto, eu tenho o JDK no meu computador, inclusive na variável de ambiente.

C:\Program Files\Java\jdk1.8.0_172

Variável de ambiente: ;%JAVA_HOME%\bin;

java -version (OK, aparecem os dados) javac -version (OK, aparecem os dados)

Como faço pra importar a JDK pro meu Eclipse?

Brunoo,

Nessa tela que te mandei, você clica no botão "Edit..." e altera o caminho para o diretório do seu JDK.

Rodrigo,

Fiz a alteração e funcionou agora.

BUILD SUCCESS

Porém estou com uma ultima dúvida:

Após compilado, ele atualiza a versão do SNAPSHOT.jar.

Entendo que cada classe possui sua propria .jar.

Sendo assim, em caso de projeto java web, teremos os jars na pasta lib, certo? Ao que me parece, ele ficará mais ou menos assim:

WEB-INF\lib

Se eu alterei 3/10 classes que possuo, terei de verificar se os 3 jars destas 3 classes foram atualizadas. E o snapshot.jar?

O que eu faço?

Para ter as 3 classes atualizadas com relação aos seus jars, basta somente colocar o snapshot.jar dentro da pasta lib que as alterações tenham efeito na aplicação? (neste caso, estou usando de exemplo a java web)

Obrigado

solução!

Oi Brunoo,

Se a aplicação não for Web, quando o maven terminar de excutar, dentro da pasta target do projeto ele vai criar um único arquivo .jar, com todas as classes do projeto compiladas.

Se for uma aplicação Web, ele vai gerar um arquivo .war, e dentro dele terá os jars das bibliotecas utilizadas pela aplicação.

Em um projeto Web, a pasta WEB-INF/lib serve para adicionar as bibliotecas externas que a aplicação precisa utilizar.

Perfeito. Obrigado