Vai a http://aem-host:port/system/console/bundles e accedi come amministratore
Problema
Gli errori "Unresolved compilation problems" (Problemi di compilazione non risolti), "cannot be resolved to a type" (Non può essere risolto), o "Compilation errors" (Errori di compilazione) sono visibili quando si visualizzano le pagine AEM e nel file error.log.
Esempio:
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
Alcune possibili cause sono:
- Bundle OSGi mancanti
- Bundle OSGi bloccati
- File classe jsp compilati e corrotti
Risoluzione
Per risolvere questo problema, seguite i passaggi seguenti:
A. Controllare se i bundle sono stati bloccati
-
-
Ordina per bundle Stato.
-
Vedere se ci sono dei bundle con stato Stopped o Resolved che non dovrebbe esserci.
-
Avviarli se sono bloccati. Se non vedete dei bundle bloccati o quelli che dovrebbero essere bloccati, allora andate al passaggio successivo. In caso contrario, verificate e convalidate se il problema è risolto.
B. Verificate che le classi siano esportate in OSGi Class Loader
-
Vai su http://aem-host:port/system/console/depfinder.
-
Nel campo di testo, inserire il nome completo della classe java dall'errore. Per esempio, nell'errore di cui sopra, è "com.geometrixx.components.page.basepage.basepage.BasePage"
-
Fate clic su Trova.
-
Se un bundle OSGi appare come risultato, allora la classe viene esportata. Accertatevi che il bundle sia impostato su Active. Se non lo è, avviate il bundle ed effettuate un test. In caso contrario proseguite con il passaggio successivo.
C. Cancellate la cache JSP compilata
Poiché la classe java viene esportata ed è disponibile per il jsp che ha lanciato l'errore, allora possiamo solo sospettare che i file compilati della classe jsp siano corrotti
-
Vai a http://aem-host:port/system/console/slingjsp.
-
Fate clic su Ricompila tutti i JSP
-
Effettuate un test per vedere se il problema è stato risolto. In caso contrario, andate al passaggio successivo.
-
Accedete al file system del server.
-
Vai alla sottodirectory della cartella di installazione di AEM crx-quickstart/launchpad/felix
-
Cerca in quella cartella i file _jsp.java. Su Linux, è possibile eseguire il comando sottostante dalla cartella di installazione di AEM
find ./crx-quickstart/launchpad/felix -type d -name classes
Si otterrebbe un risultato simile a questo:
./crx-quickstart/launchpad/felix/bundle218/data/classes
-
Nel risultato puoi vedere che bundle218 è la cartella per il bundle org.apache.sling.scripting.jsp, nel tuo caso la cartella ha un numero diverso da 218.
-
Cancellare le sottocartelle nella directory dati/classi. Esempio:
rm -rf ./crx-quickstart/launchpad/felix/bundle218/data/classes/*
-
Aprite il browser su http://aem-host:port/system/console/bundles e riavviate i bundle org.apache.apache.sling.scripting.jsp e org.apache.sling.commons.fsclassloader
-
Ora effettuate un nuovo test e convalidate per vedere se il problema è stato risolto.
Se il problema non è ancora risolto dopo tutti i passaggi di cui sopra, contattate il Servizio Clienti AEM.
Accedi al tuo account