Java错误-类型List <e>不可见-类型Map <k,v>不可见

时间:2019-03-10 08:23:44

标签: java eclipse web

我目前正在使用Java编写大学项目的网站。 对几乎所有我需要的代码进行编码后,此错误开始出现在我的屏幕上。这是错误的图片:

Image 1: The type List<code><E></code> is not visible

在相同方法下,不仅是一个,而且也是一个。 这是错误的图片:

Image 2: The type Map<code><K,V></code> is not visible

错误与“ executarRegras”方法有关(下面发布的代码)。

我对java.util.List和java.util.Map的导入都很好,当我对项目的Web部件(Servlet,ViewHelpers,JSP)进行编码时,这两个问题就开始出现。

有时候,我只是清理代码并重建代码,而这些错误只会停止显示,并且代码不会被标记为“错误”。 (但是,如果我再次清理并重新构建它,有时该类会再次被标记为错误,或者它会成功构建。错误只是随机的。

我还没有找到任何解决方案,只有基于导入和Java构建路径上的更改的东西,但没有任何效果。

没有其他有错误或不匹配的类,这是我最近遇到的唯一一个类。

我正在使用:

  • Eclipse版本:2018-12(4.10.0)
  • Java:jdk-11.0.2
  • Tomcat:v9.0服务器

根据要求,这是我的Java构建路径:

JavaBuildPath - Source

在这里,为了使“核心”存在,我需要依赖“ dominio”项目。 JavaBuildPath - Projects

JavaBuildPath - Libraries

JavaBuildPath - Order and Export

此外,如果有用的话,以下是“核心”项目参考: Project references

代码

代码如下:

package LES1_2019.core.impl.controle;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

//myproject internal imports (all classes built sucessfully)

import LES1_2019.core.IDAO;
//import geral
import LES1_2019.core.IFachada;
import LES1_2019.core.IStrategy;
//import resultado
import LES1_2019.core.aplicacao.Resultado;
//import daos
import LES1_2019.core.impl.dao.CategoriaDAO;
import LES1_2019.core.impl.dao.ProdutoDAO;
import LES1_2019.core.impl.negocio.ProdutoMesmoNome;
import LES1_2019.core.impl.negocio.ValidarDadosCategoria;
//import regras de negocio
import LES1_2019.core.impl.negocio.ValidarDadosProduto;
import LES1_2019.dominio.Categoria;
import LES1_2019.dominio.EntidadeDominio;
import LES1_2019.dominio.Produto;


public class Fachada implements IFachada {
private Map<String, IDAO> daos;
private Map<String, Map<String, List<IStrategy>>> rns;
private Resultado objResultado;

 public Fachada() {
    daos = new HashMap<String, IDAO>();
    rns = new HashMap<String, Map<String, List<IStrategy>>>();

    CategoriaDAO objCategoriaDAO = new CategoriaDAO();
    ProdutoDAO objProdutoDAO = new ProdutoDAO();

    daos.put(Categoria.class.getName(), objCategoriaDAO);
    daos.put(Produto.class.getName(), objProdutoDAO);

    //criando objetos das classes de regras de negocio
    ValidarDadosProduto objValidarDadosProduto = new ValidarDadosProduto();
    ProdutoMesmoNome objProdutoMesmoNome = new ProdutoMesmoNome();
    ValidarDadosCategoria objValidarDadosCategoria = new ValidarDadosCategoria();

    //adicionando os objetos das classes de regras a array list de salvar produtos
    List<IStrategy> rnsSalvarProduto = new ArrayList<IStrategy>();
    rnsSalvarProduto.add(objValidarDadosProduto);
    rnsSalvarProduto.add(objProdutoMesmoNome);

    //adicionando os objetos das classes de regras a array list de salvar categorias
    List<IStrategy> rnsSalvarCategoria = new ArrayList<IStrategy>();
    rnsSalvarCategoria.add(objValidarDadosCategoria);

    //criando um hasmap das listas com as regras de negocio
    Map<String, List<IStrategy>> rnsProduto = new HashMap<String, List<IStrategy>>();
    Map<String, List<IStrategy>> rnsCategoria = new HashMap<String, List<IStrategy>>();

    //adicionando as operacoes que irao utilizar o map com a lista de regras
    rnsProduto.put("SALVAR", rnsSalvarProduto);

    rnsCategoria.put("SALVAR", rnsSalvarCategoria);
    rnsCategoria.put("ALTERAR", rnsSalvarCategoria);

    rns.put(Produto.class.getName(), rnsProduto);
    rns.put(Categoria.class.getName(), rnsCategoria);

}

private String executarRegras(EntidadeDominio entidade, String operacao) {
    String nmClasse = entidade.getClass().getName();
    StringBuilder msg = new StringBuilder();

       //this is where I get the first error type Map<K,V> is not visible
    Map<String, List<IStrategy>> regrasOperacao = rns.get(nmClasse);

    if(regrasOperacao != null) {

               //this is where I get the error type List<E> is not visible
        List<IStrategy> regras = regrasOperacao.get(operacao);

        if(regras != null) {
            for(IStrategy s:regras) {
                String m = s.processar(entidade);
                System.out.println(m);
                if(m != null) {
                    msg.append(m);
                    msg.append("\n");
                }
            }
        }
    }

    if(msg.length()>0)
        return msg.toString();
    else
        return null;
}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

解决此问题的方法是将版本从Java 9更改为Java 8。