JSF: classe bean null

Boa tarde. Estou fazendo um curso básico de JSF; fiz tudo conforme a aula, porém no momento de executar a aplicação no TomCat, ele dá erro.
O que o programa faz: uma telinha para criar um objeto com as informações digitadas no campo. Através da classe GestaoProdutosBean, os dados são capturados e colocados em um objeto Produto. Mais tarde eu recupero esses dados para teste.

VIEW

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:ui="http://java.sun.com/jsf/facelets">
	<h:head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>Gestão de Produtos</title>
	</h:head>
	<h:body>
		<h:form>
			Nome:
			<h:inputText value="#{gestaoProdutosBean.produto.nome}" />
			<br/>
			
			Fabricante:
			<h:inputText value="#{gestaoProdutosBean.produto.fabricante}" />
			<br/>
			
			Categoria:
			<h:inputText value="#{gestaoProdutosBean.produto.categoria}" />
			<br/>
			
			<h:commandButton value="Incluir" action="#{gestaoProdutosBean.incluir}" />
		</h:form>

		<ol>
			<ui:repeat var="item" value="#{gestaoProdutosBean.produtos}">
				<li>#{item.nome} - #{item.fabricante} - #{item.categoria}</li>
			</ui:repeat>
		</ol>

	</h:body>
</html>

GestaoProdutosBean

package com.algaworks.cursojsf2.visao;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import com.algaworks.cursojsf2.dominio.Produto;

@ManagedBean
@SessionScoped
public class GestaoProdutosBean {

	private List<Produto> produtos;
	private Produto produto;
	
	public GestaoProdutosBean() {
		this.produtos = new ArrayList<Produto>();
		this.produto = new Produto();
	}
	
	public void incluir() {
		this.produtos.add(this.produto);
		this.produto = new Produto();
	}

	public Produto getProduto() {
		return produto;
	}

	public List<Produto> getProdutos() {
		return produtos;
	}
}

Produto

package com.algaworks.cursojsf2.dominio;

public class Produto {

	private String nome;
	private String fabricante;
	private String categoria;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getFabricante() {
		return fabricante;
	}
	public void setFabricante(String fabricante) {
		this.fabricante = fabricante;
	}
	public String getCategoria() {
		return categoria;
	}
	public void setCategoria(String categoria) {
		this.categoria = categoria;
	}
}

WEB.XML

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>
  
  <filter>
  	<filter-name>Encoding Filter</filter-name>
  	<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
  	<init-param>
  		<param-name>encoding</param-name>
  		<param-value>utf-8</param-value>
  	</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>Encoding Filter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

ERRO

javax.el.PropertyNotFoundException: /GestaoProdutos.xhtml @13,62 value="#{gestaoProdutosBean.produto.nome}": Target Unreachable, identifier 'gestaoProdutosBean' resolved to null
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1034)
	at javax.faces.component.UIInput.validate(UIInput.java:964)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1237)
	at javax.faces.component.UIInput.processValidators(UIInput.java:702)
	at javax.faces.component.UIForm.processValidators(UIForm.java:253)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1216)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1216)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1164)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Estou usando Eclipse Oxygen, JDK 1.8 e TomCat 7.

Consegui resolver, nem sei como. Aparentemente era um problema de versionamento.
Apaguei as bibliotecas JRE que estavam nas configurações e pedi para a IDE usar a JRE Default. Não entendo muito bem o porquê, mas voltou a funcionar. O problema é se voltar o erro.