Java: 在 Map、HashMap 上出现“Cannot find symbol”错误

7

我正在尝试运行这段代码:

import java.util.*;

public class ScanReg {
  public Map<Integer, ArrayList<Long>> scanMap = new HashMap<Integer, ArrayList<Long>>();
}

在这个类中:

import java.util.*;

public class NxtStart {
  ScanReg sr = new ScanReg();
}

这一直给我报以下错误:
.\ScanReg.java:6: error: cannot find symbol
        public Map<Integer, ArrayList<Long>> scanMap = new HashMap<Integer, Arra
yList<Long>>();
               ^
  symbol:   class Map
  location: class ScanReg
.\ScanReg.java:6: error: cannot find symbol
        public Map<Integer, ArrayList<Long>> scanMap = new HashMap<Integer, Arra
yList<Long>>();
                                                           ^
  symbol:   class HashMap
  location: class ScanReg
2 errors

请问有人能告诉我为什么吗?


2
你没有自己的名为 java.util 的本地包,对吧?我会尝试导入整个类名:import java.util.Map;,以及其他使用的util类,例如HashMap。 - Hovercraft Full Of Eels
卡尔可能有所发现(加1分给他!)。 - Hovercraft Full Of Eels
我无法根据问题中的信息重新创建此内容。还有其他事情发生了。由于原始发布者很可能不再关心,因此应将其关闭为“无法重现”。 - Stephen C
2个回答

2

您可能正在使用Java 1.4进行编译,并使用泛型(仅从1.5版本开始提供)。


1
抱歉,我无法重现这个问题。我复制了您的ScanReg.java文件并且编译成功了。 - Kal

-2

你需要将内部类声明为 静态

public static class ScanReg {}

否则,将其放在不同的Java文件中,并导入ScanReg。

这不会解决他试图解决的问题。那是关于库类和导入的问题。此外,请注意这是一个古老的问题。如果原帖作者现在还没有解决问题,他将不再关心。 - Stephen C
我重新制造了这个问题并测试了它,证明这是一个可行的解决方案。 - Edward Aung
我无法重现问题。当我从命令行(Java 8)编译这两个文件时,我没有收到任何编译错误。原帖的作者肯定有什么“不对劲”的地方没有告诉我们。 - Stephen C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接