Não é possível compilar o projeto quando estou usando o Lombok no IntelliJ IDEA


202

Estou tentando usar o Lombok no meu projeto que estou desenvolvendo usando o IntelliJ IDEA 11.

Instalei o plug-in de terceiros para o IDEA e ele parece funcionar bem porque o IDEA vê todos os métodos / campos gerados automaticamente.

Então, eu tenho uma classe que usa Slf4j. Eu anotei assim

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class TestClass
{
    public TestClass()
    {
        log.info("Hello!");
    }
}

Mas quando eu construir meu projeto espetos compilador: cannot find symbol variable log.

Você poderia me dizer o que estou perdendo aqui?

Atualização: acabou o processo de anotação RequestFactory que falhou.

input files: {com.zasutki.courierApp.server.TestServlet, com.mine.courierApp.server.model.DatastoreObject}

annotations: [javax.inject.Singleton, javax.inject.Inject, lombok.Getter, lombok.Setter, com.googlecode.objectify.annotation.Id, com.googlecode.objectify.annotation.OnSave]

Processor com.google.web.bindery.requestfactory.apt.RfValidator matches [lombok.Getter, com.googlecode.objectify.annotation.Id, javax.inject.Inject, lombok.Setter, com.googlecode.objectify.annotation.OnSave, javax.inject.Singleton] and returns false.

cannot find symbol variable log

Alguma idéia sobre soluções alternativas?

Update2: Talvez não seja algo que os leitores querem ouvir, mas acabei mudando para o Scala .


Os erros aparecem mesmo sem o plug-in. Não consigo executar testes de um projeto se o Lombok estiver nas minhas dependências pom.xml.
Nowaker

1
Na verdade, os leitores preferem saber que você mudou para o Eclipse.
Simeon Leyzerzon

1
Os leitores vêm aqui para encontrar soluções para o problema em questão, fazer o IntelliJ funcionar com o lombok.
Florian F

Respostas:


411

Corrigi-o no IDEA 12, definindo a caixa de seleção Enable annotation processingem:

Configurações -> Compilador -> Processadores de Anotação

Para o IDEA 2016.2:

Preferências ...> Compilação, Execução, Implantação> Compilador> Processadores de Anotação

Após a ativação, execute Build -> Rebuild Project para que as anotações sejam reconhecidas e eliminem erros.


Para o IDEA 2019.2.1, dependendo de como o projeto está configurado, a instalação do plugin Project Lombok pode não ser suficiente. Aqui está outra maneira de usar o Project Lombok com o IntelliJ IDEA:

  1. Visite https://projectlombok.org/download
  2. Faça o download do arquivo JAR no diretório lib do projeto (por exemplo, $HOME/dev/java/project/libs).
  3. Inicie o IDE.
  4. Clique em Arquivo 🠖 Configurações .
  5. Expanda Compilação, Execução, Implantação, Compilador, Processadores de Anotação .
  6. Garantir Ativar processamento de anotação está marcada.
  7. Certifique-se de que o Store gere fontes relativas a esteja selecionado com base nas configurações do módulo do projeto (se o diretório de saída do módulo não funcionar, volte e tente a outra configuração).
  8. Clique Aplicar .
  9. Clique plugins .
  10. Clique Marketplace .
  11. Defina o campo de pesquisa para: lombok
  12. Instalar Lombok .
  13. Clique OK .
  14. Reinicie o IDE, se solicitado.
  15. Clique em Arquivo Settings Configurações do Projeto .
  16. Selecionar bibliotecas .
  17. Clique no símbolo + para adicionar uma nova biblioteca de projetos (ou pressione Alt+ Insert).
  18. Selecione Java .
  19. Defina o caminho para: $HOME/dev/java/project/libs/lombok.jar
  20. Clique em OK .
  21. Selecione os módulos a serem aplicados.
  22. Clique em OK .
  23. Como opção, renomeie lombokpara Project Lombok 1.18.8.
  24. Clique em OK .

O projeto agora pode importar do lombokpacote e usar as anotações do Project Lombok (por exemplo, lombok.Settere lombok.Getter).


Eu tive que parar meu Win10 por um problema de congelamento (falha do piloto) e o IntelliJ foi aberto. Na reinicialização, acho que os arquivos de ideias no diretório do projeto foram alterados (workspace.xml) e depois disso não consegui gerar meus métodos getters / setters via lombok. "Não é possível encontrar o símbolo" no momento da compilação. Lutei um pouco para identificar a origem do problema.
20516 Alex

2
Não se esqueça de conjunto processador de anotação: lombok.launch.AnnotationProcessorHider $ AnnotationProcessor tanto para maven-compiler-plugin e Idea (Configurações -> Compiler -> Anotação Processors)
Jan Kubovy

3
Isso não está funcionando para mim em 2016. Projeto web Maven. A única coisa que funcionou foi a instalação do plugin lombok.
MAKSIMOV

Ideia 16.2.2 + gradle + plugin lombok instalado. Eu poderia executar o projeto sem isso ao usar o runle gradle (da idéia). Se eu quisesse executar diretamente (já que essa é a única maneira que eu sei para fazer o hotswap de código funcionar), eu tinha que habilitar o processamento de anotações. Acho que a ideia não configura totalmente o projeto automaticamente e as anotações não são processadas apesar do plug-in?
Neikius

Trabalhou para mim no IDEA 2017.01. A instalação do Lombok funcionou para o Intellisense, mas não para a compilação até que o Processador de anotações foi ativado.
Lreeder 24/05

73

A ativação do processamento de anotação fará com que funcione

Mas se você estiver em um Mac , ative o processamento de anotações (marque a caixa de seleção) nos dois locais disponíveis.

1.) Intellij Idea -> Preferências -> Compilador -> Processadores de Anotação

2.) Arquivo -> Outras configurações -> Configurações padrão -> Compilador -> Processadores de anotação


2
Ainda tinha que fazer isso, mesmo com o mais recente intellij 15.0.2
BeepDog 8/16

1
Ainda presente em 15.0.4. Eu também tive que atualizar a versão Lambok para a mais recente e alterar o compilador Java para JAVAC. Em seguida, refaça o projeto
Srikanta 2/16

Ainda precisa ser feito no IntelliJ 2016.1.3 :) Você deve definir os 2 processadores de anotação. Uma dor quando você esquece!
Raio Hunter

Ainda deve fazer em IntelliJ 2.016,3 :)
Sukesh Kotian

mesmo ativando nos dois lugares, o IntelliJ 2016.3.2 ainda não consegue compilar com o Lombok
1.16.12

56

Representação gráfica de como resolver esse problema.

Primeiro ative os processadores de anotação e tente. Isso pode ou não funcionar. insira a descrição da imagem aqui

Poste isso, você pode instalar o plug-in lombok a partir de intellij (após a instalação, o Intellij será reiniciado para ativar o plug-in, portanto, salve seu trabalho. (O Intellij salva todas as alterações antes de reiniciar, apenas para garantir a segurança). ) captura de tela abaixo:

insira a descrição da imagem aqui


3
obrigado .. eu tenho o mesmo problema. Esqueci de instalar o plug-in antes de definir a configuração da anotação :)
TYL

19
  1. Verifique se ele foi adicionado corretamente ao seu projeto.

exemplo para Gradle:

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
  1. Instale o plugin Lombok para o seu IDE
  2. Marque a caixa de seleção "Ativar processamento de anotação" no IDE (IntellijIdea), não faça idéia se existe algo assim para outros IDEs como o Eclipse.

1
isso, isso e mil vezes isso. Obrigado, eu estava preso por uma hora
ch1ll

1
Sim, você está certo, devemos verificar primeiro a configuração da compilação, depois a configuração do IDE. muito obrigado!
Eric Tan

Esta é a única coisa que realmente funcionou! Por que tem apenas 13 curtidas ?!
doctorram

Única solução que funcionou para mim: D obrigado !!
Bianca

9

Apenas para referência usando o IntelliJ 2018.3 , resolvi esse problema (usando a @Dataanotação para inserir getter/setter) seguindo as três etapas:

  1. Arquivo -> Configurações -> Compilação, Execução, Implantação -> Processadores de anotação -> Ativar processamento de anotação;

insira a descrição da imagem aqui

Lembre-se de aplicar a alteração.

  1. Instale o plugin lombok na mesma caixa de diálogo de configuração;

insira a descrição da imagem aqui

  1. Parece bom o suficiente por enquanto, é necessário reiniciar o IntelliJ e reconstruir seu projeto.

Muitas felicidades :)


Você teve maven ou gradle? Estou tendo um problema ao fazer o lombok funcionar para um projeto de vários módulos. Eu continuo recebendo o erro: Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [module-core,module-utils] are excluded from annotation processing
0x01Brain

@ 0x01Brain Eu estava usando o maven naquela época, mas agora usando o gradle. Quanto à sua pergunta, espero que você possa iniciar uma nova pergunta específica para descrever os detalhes e que muitos especialistas o ajudarão;)
Ouvido em 7/06

não importa, eu consegui compilar agora, obrigado. Eu tive algum conflito nas depedências module-core foi importado no módulo utils e o utils module foi importado no módulo core que causou um conflito.
0x01Brain

8

Se você tiver verificado essas duas etapas, a seguir

  1. Ativar anotações: é uma verificação feita nas preferências do IntelliJ.
  2. Importando o lombok para o IntelliJ classPath (Preferências -> Plugins)

e ainda recebendo erros , verifique o compilador - se for JAVAC ou ECLIPSE .

Você pode verificar o compilador em Preferências -> Compilação, Execução, Implantação -> Compilador -> Compilador Java.

Altere o compilador Usar para Javac (se for Eclipse). Isto é o que funcionou para mim.


8

na versão mais recente do Gradle, você deve usar o annotationProcessor:

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok:1.18.8'

7

Como observado aqui , cite: "Você deve ativar a opção de compilador externo e habilitar os processadores de anotação ou desabilitar o compilador externo e desabilitar todos os compiladores de anotação para trabalhar com o lombok". Isso resolveu o meu problema. Observe que eu adicionei o plug-in Scala antes de receber esse erro, então suspeito que o plug-in alterou algumas das configurações acima.


7

existe um plugin para intellij. veja aqui: https://projectlombok.org/download.html


2
Este plugin pode ser instalado no menu Configurações / Plugins do Intellij. Verifique se você tem o plug-in mais recente instalado. A atualização para o plugin mais recente funcionou para mim.
JasonM1

5

Você tem o lombok como dependência do seu projeto? O lombok.jar deve estar no caminho de classe durante a compilação do projeto, que está usando qualquer uma das anotações do lombok.


Acontece que ele falha dentro do processador de anotação. Atualizei minha pergunta com o log de saída.
expert

3

Eu estava no Mac

Esta é a minha versão do IntelliJ IDEA e do Mac - IntelliJ IDEA 2017.1.5 Build # IU-171.4694.70 --- Mac OS X 10.12

Além de ativar o processamento de anotações (marque a caixa de seleção) nesses 2 locais.

1.) Intellij IDEA -> Preferências -> Compilador -> Processadores de anotação

.

2.) Arquivo -> Outras configurações -> Configurações padrão -> Compilador -> Processadores de anotação

Eu tive que instalar o plugin Lombok também para fazê-lo funcionar.

3.) Intellij IDEA -> Preferências -> Plugins -> Procurar Repositórios-> Procure por "Lombok" -> instalar plugin -> Aplicar e reiniciar o IDEA


2

Para aqueles de vocês que ainda estão tendo problemas:

Além das etapas acima para ativar os processadores de anotação e instalar o plug-in IntelliJ Lombok, eu também precisei do Build -> Rebuild Project.


2
Eu também tive que invalidar o cache e reiniciar antes que o Intellij parasse de reclamar.
Hans

2

1. instale o plugin lombok para o IDEA

Intellij Idea -> Preferências -> Plugins -> digite lombok -> Procure nos Repositórios -> instale -> reinicie o IDEA

2 plugin plugin de configuração lombok

A ativação do processamento de anotação fará com que funcione

Mas se você estiver em um Mac, ative o processamento de anotações nos dois locais a seguir:

Idea Intellij -> Preferências -> Compilação, Execução, Implantação -> Compilador -> Processadores de anotação, marque a caixa de seleção "Ativar processamento de anotação". Arquivo -> Outras configurações -> Configurações padrão -> Compilação, Execução, Implantação -> Compilador -> Processadores de anotação, marque a caixa de seleção "Ativar processamento de anotação".


Não vejo Configurações padrão em Outras configurações no IntelliJ. Ainda estão presentes? Estou usando a edição Ultimate
versão11.03

1

Não funcionou para mim com nenhuma das soluções acima. Eu adicionei <scope>provided</scope>a dependência no pom.xml e funcionou.

<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
    </dependency>

Qual versão do IntelliJ você está usando? Além disso, qual versão do JDK?
realPK 26/02

1

Eu enfrentei esse problema depois de atualizar o IDEA para 2018.3. Eu tive que atualizar todo o plugin existente


1

Depois de tentar todas as sugestões aqui, também encontrei outro tipo de solução. Parece que, às vezes, o IDEA não pode obter processadores do caminho de classe do projeto.

Portanto, na guia Configurações dos processadores de anotação , você deve especificar manualmente o caminho do processador .


0

Eu tive um problema semelhante ao criar com o JDK8, defini o projeto de volta para o JDK7 e funcionou bem. Pode ser uma versão mais antiga do Lombok que não será compilada no JDK8.


Eu também tive o mesmo problema. Tente alterar a versão do Lombok para que o IntelliJ baixe a dependência novamente.
Sanghyun Lee

0

Eu tive o mesmo problema, então vou deixar isso aqui para referência futura do meu esquecimento.

Ao Alt+Enterinserir @Slf4janotações, escolhi por engano a importação inválida. Portanto, se o código não compilar, certifique-se de importar:

import lombok.extern.slf4j.Slf4j;


0

FWIW - Ao definir anotações do compilador, conforme descrito acima, verifique também os perfis que você está usando, como "Processadores de anotações padrão do Maven".


0

Pode acontecer que, mesmo que você o tenha configurado corretamente e esteja visível entre as bibliotecas e na lista de dependências do Gradle, o IntelliJ ainda não o tenha no caminho da classe. Ou está lá, mas configurado com escopo diferente (ex: teste em vez de compilar).

Primeiro, verifique se o plug-in está instalado e o processamento de anotações ativado, conforme indicado em outras respostas.

Se você ainda não tiver uma anotação reconhecida, coloque o cursor nela, pressione ALT + ENTER (ou OPTION + ENTER) e veja se você tem uma opção de menu. Add library: Gragle: org.projectlombok:lombok:VERSION to class path . Se você conseguir vê-lo, escolha este e isso pode resolver seu problema.

Você pode verificar a biblioteca e seu escopo em: Configurações do projeto / guia Módulos / Dependências (procure por lombok lá)



0

No meu caso, eu tinha todas as coisas mencionadas abaixo no lugar e ainda não estava funcionando.

  1. Eu tinha o plugin lombok instalado corretamente
  2. Processadores de anotação, também verificados.
  3. Meu compilador Java foi definido como JAVAC

Para corrigir meus problemas, tive que

  1. Atualize o lombok para a versão mais recente (v0.15) a 7 de outubro de 2017.
  2. Reinicie o IntelliJ.
  3. Recrie o projeto.

Veja as capturas de tela sobre como atualizar e reconstruir o projeto abaixo.

Como atualizar o lombok

Como reconstruir o projeto


0

Você pode corrigir cannot find symbol variable logao usar o lombok no IntelliJ IDEA 2017.1.3, fazendo o seguinte:

Preferências do IntelliJ> Compilação, Execução, Implantação> Processadores de anotação> [Verificar] Ativar processamento de anotação> Aplicar


0

Instale o plug-in abaixo e reinicie o IDE para resolver os erros:

File -> Settings -> Plugins-> Browse Repositories -> Lombok Plugin

Ativar processador de anotação:

File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
File -> Other Settings -> Default Settings -> Compiler -> Annotation Processors


0

Se as bibliotecas lombok estiverem definidas corretamente, como muitas mencionadas acima, clique na anotação que não seria compilada, Alt-Enter, uma importação correta será exibida e o código será compilado. - Demorei um pouco para descobrir. Coloquei aqui para o caso de as pessoas não entenderem o óbvio simples.


0

Para usuários do Eclipse no MacOS, faça isso. Funcionou para mim.

  1. Copie o lombok.jar no Eclipse.app/Contents/MacOSdiretório
  2. Inclua -javaagent:lombok.jarno final do arquivo Eclipse.app/Contents/Eclipse/eclipse.ini.
  3. Reinicie o Eclipse e ative “Processamento de anotações” nas propriedades do projeto.

Fazendo referência a isso


0

Além do mencionado em todas as respostas, tenho que adicionar o código abaixo na configuração do pom.xml para fazer o mvn clean install funcionar. Antes de adicionar este código, eu estava recebendo o símbolo não encontrado para getters e setters.

                    <annotationProcessorPath>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.8</version>
                    </annotationProcessorPath>

0

Para mim, o que funcionou:

  1. Eu desinstalei o plugin Lombok instalado recentemente
  2. Marquei "Ativar plug-in de anotação"
  3. Selecionei "Obter processador do caminho de classe do projeto" na mesma página

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.