Java 错误 - 类型 List<E> 不可见 - 类型 Map<K,V> 不可见

标签 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;
}

有什么想法吗?

最佳答案

这个问题的解决方案是将版本从 Java 9 更改为 Java 8。

关于Java 错误 - 类型 List<E> 不可见 - 类型 Map<K,V> 不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55085804/

相关文章:

java - 换行 IRC 协议(protocol)

java - 如何使用线程每次进行检查(例如在后台运行)直到我的条件为真

java - Mongodb 查询通过其值查找所有键

java - 本地主机上的 Tomcat v8.0 服务器所需的端口 8080 已被使用

security - 这些隐藏字段的使用不安全吗?

java - 基于方法参数的方法调用的细粒度同步/锁定

android - 安装新的 Sequoyah 插件时 Eclipse “Duplicate Location”?

c - 在 Eclipse CDT 中调试启动时抛出 java.lang.IllegalArgumentException

html - 我的 CSS 下拉菜单中需要第三级

javax.ws.rs.NotFoundException : HTTP 404 Not Found angular 1. 5