Problema

Os erros "Problemas de compilação não resolvidos", "não pode ser resolvido para um tipo" ou "Erros de compilação" são vistos ao visualizar páginas do AEM e no error.log.

Por exemplo:

31.01.2017 06:50:16.950 *ERROR* [192.150.9.201 [1485805816944] GET /content/geometrixx/en.html HTTP/1.1] org.apache.sling.engine.impl.SlingRequestProcessorImpl service: Uncaught SlingException
java.lang.Error: Unresolved compilation problems: 
    com.geometrixx.components.page.basepage.BasePage cannot be resolved to a type
    com.geometrixx.components.page.basepage.BasePage cannot be resolved to a type
    at org.apache.jsp.apps.geometrixx.components.page.base_002dpage.base_002dpage_jsp._jspService(base_002dpage_jsp.java:194)
    at org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
12.02.2018 12:30:52.565 *ERROR* [10.43.32.15 [1518456652560] GET /mnt/overlay/cq/gui/content/coral/common/form/tagfield/picker.html HTTP/1.1] org.apache.sling.engine.impl.SlingRequestProcessorImpl service: Uncaught SlingException
org.apache.sling.scripting.java.impl.ServletWrapper$CompilerException: Compilation errors in /libs/cq/gui/components/coral/common/form/tagfield/datasources/children/children.java:
Line 72, column 3158 : The method transform(Object) of type new Transformer(){} must override a superclass method
    at org.apache.sling.scripting.java.impl.ServletWrapper$CompilerException.create(ServletWrapper.java:290)
12.02.2018 12:31:23.006 *ERROR* [10.43.32.15 [1518456683001] GET /mnt/overlay/granite/ui/content/coral/foundation/form/pathfield/picker.html HTTP/1.1] org.apache.sling.engine.impl.SlingRequestProcessorImpl service: Uncaught SlingException
org.apache.sling.scripting.java.impl.ServletWrapper$CompilerException: Compilation errors in /libs/granite/ui/components/coral/foundation/form/pathfield/datasources/children/children.java:
Line 114, column 4844 : The method evaluate(Object) of type new Predicate(){} must override a superclass method
Line 132, column 5667 : The method compare(Resource, Resource) of type new Comparator<Resource>(){} must override a superclass method
Line 164, column 6736 : The method transform(Object) of type new Transformer(){} must override a superclass method
Line 191, column 7631 : The method evaluate(Object) of type children.FolderPredicate must override a superclass method
Line 208, column 8089 : The method evaluate(Object) of type children.HierarchyPredicate must override a superclass method
Line 225, column 8553 : The method evaluate(Object) of type children.NoSystemPredicate must override a superclass method
Line 242, column 9064 : The method evaluate(Object) of type children.HierarchyNotFilePredicate must override a superclass method
Line 282, column 10387 : The method transform(Object) of type new Transformer(){} must override a superclass method
    at org.apache.sling.scripting.java.impl.ServletWrapper$CompilerException.create(ServletWrapper.java:290)

Causa

Aqui estão algumas causas possíveis:

  1. Pacotes do OSGi ausentes
  2. Pacotes interrompidos do OSGi
  3. Arquivos de classe jsp compilados corrompidos

Resolução

Para solucionar esse problema, siga as etapas abaixo:

A. Verifique se os pacotes estão parados

  1. Acesse http: http://aem-host:port/system/console/bundles e efetue login como administrador.

  2. Ordenar por pacote Status.

  3. Veja se há algum pacote em estado Parado ou Resolvido que não deveria ser.

  4. Comece-os se eles estiverem parados.  Se você não vir nenhum pacote interrompido ou os que devem ser interrompidos, continue na próxima etapa.  Caso contrário, teste e valide se o problema foi resolvido.

B. Verifique se as classes são exportadas para o carregador de classes OSGi

  1. Acesse http://aem-host:port/system/console/depfinder.

  2. No campo de texto, insira o nome completo da classe java a partir do erro. Por exemplo, no erro acima, é "com.geometrixx.components.page.basepage.BasePage"

  3. Clique em Localizar.

  4. Se um pacote OSGi aparecer como resultado, a classe será exportada.  O pacote deve estar ativo. Se não for, inicie o pacote e teste.  Caso contrário, vá para a etapa seguinte.

C. Limpar o cache JSP compilado

Como a classe java é exportada e está disponível para o jsp que emitiu o erro, então podemos apenas suspeitar que os arquivos de classe jsp compilados estão corrompidos.

  1. Acesse http://aem-host:port/system/console/slingjsp.

  2. Clique em Recompile todos os JSPs.

  3. Teste para ver se o problema foi resolvido.  Caso contrário, continue para o próximo passo.

  4. Faça o login no sistema de arquivos do servidor.

  5. Vá para o subdiretório da pasta de instalação do AEM crx-quickstart/launchpad/felix

  6. Pesquise sob essa pasta por arquivos _jsp.java.  No Linux, você pode executar o comando abaixo da pasta de instalação do AEM.

    find ./crx-quickstart/launchpad/felix -type d -name classes

    Você obteria um resultado semelhante a este:

    ./crx-quickstart/launchpad/felix/bundle218/data/classes
  7. No resultado, você pode ver que bundle218 é a pasta para o pacote org.apache.sling.scripting.jsp, no seu caso, a pasta tem um número diferente do 218.

  8. Exclua os subdiretórios no diretório data/classes.  Por exemplo:

    rm -rf ./crx-quickstart/launchpad/felix/bundle218/data/classes/*
  9. Abra seu navegador em http://aem-host:port/system/console/bundles and restart the bundles org.apache.sling.scripting.jsp and org.apache.sling.commons.fsclassloader

  10. Agora teste novamente e valide para ver se o problema foi resolvido.

Se o problema ainda não for resolvido após todas as etapas acima, entre em contato com o Atendimento ao Cliente do AEM.

Esta obra está licenciada sob uma licença não adaptada da Creative Commons Attribution-Noncommercial-Share Alike 3.0  As publicações do Twitter™ e do Facebook não são cobertas pelos termos do Creative Commons.

Avisos legais   |   Política de privacidade online