Onde o IntelliJ coloca os arquivos .class quando compila durante a digitação
-
21-12-2019 - |
Pergunta
O IntelliJ está compilando o tempo todo, pois me avisa com linhas vermelhas onduladas quando há um erro?(além dos recursos de preenchimento automático) Ou está fazendo algum tipo de compilação psuedo?
Se estiver fazendo uma compilação legítima, onde coloca essas classes compiladas?Gostaria de apontar meu JRebel para esse diretório em vez das pastas de destino do módulo individual.
Solução
O Meo tem razão, pelo que aprendi quando desenvolvi plugins para linguagens customizadas, o IntelliJ não compila nada até que você faça explicitamente o seu projeto.Enquanto você digita, seu lexer/analisador detecta qualquer token ou construção de código inválido.Enquanto isso, ele mantém um índice de cada classe e método do seu projeto e suas dependências, juntamente com suas assinaturas, etc.
Depois de parar de digitar, você verá um pequeno olho colorido na parte superior da medianiz direita.Indica que o IDE está executando "anotadores" e "inspeções de código".Eles são capazes de dizer se classes, métodos e variáveis são válidos ou não com base no índice atual e no estado atual do seu arquivo (importações, declarações, etc.).O mesmo vale para variáveis não utilizadas, parâmetros inválidos em chamadas de métodos, etc.
Prós:
- os anotadores trabalham diretamente no que chamam de árvore PSI, que é basicamente um AST aprimorado que representa seu arquivo atual
- pode ser mais rápido que compilar sempre (usa um índice e não precisa recompilar todas as classes dependentes)
- anotadores podem detectar coisas
javac
não me importo, como possíveis bugs (por ex.usando=
em vez de==
em umwhile
doença)
Contras:
- isso é muito trabalho, basicamente eles precisam reescrever a lógica para encontrar todos os erros que
javac
pode produzir (é por isso que você pode encontrar muitos problemas em seu bugtracker chamado "bom código é vermelho" ou "código incorreto é verde", o que significa que há uma diferença entre o que eles detectam e o que o compilador produziria)
DR:não produz nenhum .class
até você fazer seu projeto, tudo é feito “à mão”
Outras dicas
Para cada módulo, o caminho da saída do compilador pode ser encontrado a partir de Paths Aba nas configurações do módulo . O JreBel Plugin gera automaticamente rebel.xml e deriva o caminho de diretório de configurações de módulo , então você não precisa apontar para os locais manualmente - basta gerar rebel.xml usando o plugin IDE: Clique com o botão direito do mouse emA vista do projeto -> jrebel -> gerar rebel.xml
Intellij entende o código, ele não precisa compilar o código para saber o que está errado.
Eu encontrei meus arquivos .class indo para as pastas out / production / main do diretório inicial do projeto.