Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

10
respostas

Error loading css, cannot find "theme.css" resource of "primefaces-" library

oioi, alguém consegue ajudar?

estou usando as mesmas versões do primefaces e do all-themes das aulas... mas parece que o web.xml nao consegue setar o tema pela EL... passando: vader funciona ok.

<context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>#{temaBean.tema}</param-value>
    </context-param>
INFORMAÇÕES: Server startup in 32937 ms
FASE: RESTORE_VIEW 1
/login.xhtml
FASE: RENDER_RESPONSE 6
mai 23, 2018 12:12:42 AM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
GRAVE: Error Rendering View[/login.xhtml]
javax.faces.FacesException: Error loading css, cannot find "theme.css" resource of "primefaces-" library
    at org.primefaces.renderkit.HeadRenderer.encodeCSS(HeadRenderer.java:149)
    at org.primefaces.renderkit.HeadRenderer.encodeBegin(HeadRenderer.java:81)
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:865)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1854)
10 respostas

Oi Aline,

Poste aqui o código completo da sua classe TemaBean, para que possamos analisar se o problema é nela.

package br.com.caelum.livraria.bean;

import javax.annotation.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class TemaBean {
    private String tema = "omega";

    public String getTema() {
        return tema;
    }

    public void setTema(String tema) {
        this.tema = tema;
    }


    public String[] getTemas() {
        return new String[] {
                "afterdark", "afternoon", "afterwork", "aristo",
                "black-tie", "blitzer", "bluesky", "bootstrap", "casablanca",
                "cupertino", "cruze", "dark-hive", "delta", "dot-luv",
                "eggplant", "excite-bike", "flick", "glass-x", "home",
                "hot-sneaks", "humanity", "le-frog", "midnight", "mint-choc",
                "overcast", "pepper-grinder", "redmond", "rocket", "sam",
                "smoothness", "south-street", "start", "sunny", "swanky-purse",
                "trontastic", "ui-darkness", "ui-lightness", "vader" };
        }

}

Oi Aline,

Esse ManagedBean deve ter escopo de sessão:


@ManagedBean
@SessionScoped
public class TemaBean {

}

Obs: os imports das annotations devem ser do pacote do jsf(javax.faces).

Veja se resolve.

ops.. tem razão! ainda assim persiste o erro... logo ao chamar a página de login já ocorre:

HTTP Status 500 – Internal Server Error
Type Exception Report

Message Error loading css, cannot find "theme.css" resource of "primefaces-" library

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: Error loading css, cannot find "theme.css" resource of "primefaces-" library
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause

javax.faces.FacesException: Error loading css, cannot find "theme.css" resource of "primefaces-" library
    org.primefaces.renderkit.HeadRenderer.encodeCSS(HeadRenderer.java:149)
    org.primefaces.renderkit.HeadRenderer.encodeBegin(HeadRenderer.java:81)
    javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:865)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1854)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
    com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Note The full stack trace of the root cause is available in the server logs.

Oi Aline,

Bom, pela mensagem então ele não encontrou a lib de temas do primefaces.

Confere se ela está na pasta WebContent/WEB-INF/lib do seu projeto.

adicionei o "all-themes-1.0.10.jar" lá...

também confirmei em: Java Resources - Libraries - Web App Libraries - all themes - META-INF - resources - e realmente nao tinha o tema "omega" (mas estranhamente ele carrega qdo coloco de forma literal no xml omega)

então alterei para um tema que existe no TemaBean: private String tema = "afterdark";

E ocorre o mesmo erro: Error loading css, cannot find "theme.css" resource of "primefaces-" library

Oi Aline,

Só para garantir que não é problema no jar, faça o seguinte: baixe esse jar do all-themes-1.0.9 e substitua no seu projeto: https://repository.primefaces.org/org/primefaces/themes/all-themes/1.0.9/all-themes-1.0.9.jar

Outra coisa, muda no TemaBean o tema default para o blusky, para ver se pelo menos ele é carregado por padrão:

public class TemaBean {
    private String tema = "bluesky";
    //...
}

mesmo erro =/

INFORMAÇÕES: Server startup in 34916 ms
FASE: RESTORE_VIEW 1
/login.xhtml
FASE: RENDER_RESPONSE 6
mai 24, 2018 5:20:29 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
GRAVE: Error Rendering View[/login.xhtml]
javax.faces.FacesException: Error loading css, cannot find "theme.css" resource of "primefaces-" library
    at org.primefaces.renderkit.HeadRenderer.encodeCSS(HeadRenderer.java:149)
    at org.primefaces.renderkit.HeadRenderer.encodeBegin(HeadRenderer.java:81)
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:865)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1854)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

Oi Aline,

Olhando a mensagem de erro, ela dá uma possível dica sobre o problema:

... resource of "primefaces-" library

Era para a mensagem ser algo como:

... resource of "primefaces-bluesky" library

Repare que a mensagem de erro deveria mostrar o nome do tema que não foi carregado.

Se não apareceu o nome do tema, significa que tem algum erro no parametro do web.xml. Mas você postou o seu web.xml, que está assim:

<param-value>#{temaBean.tema}</param-value>

Não tem erro nessa tag, então o problema é no seu ManagedBean TemaBean.

Anteriormente tinha dito para você corrigir os imports das anotações @ManagedBean e @SessionScoped, pois estava importado de outro pacote que não é do JSF.

Dá uma conferida se você fez esse ajuste, pois pode ser esse o motivo do erro do primefaces, pois ele não encontrou o ManagedBean TemaBean, por conta da anotação incorrreta.

oi, sim, acho que também foi o import do @ManagedBean nesse caso, obrigada pela ajuda!