OS X 10.9.1 上的 java "import java.util.*"编译失败

标签 java

我写了一个非常简单的java堆栈操作程序。我正在 OS X 10.9.1 上使用 Java(TM) SE 运行时环境。我尝试过 JDK build 1.7.0_13-b20 和 build 1.7.0_51-b13,两者都不适合我。我只是想测试 java Stack 类。我没有私有(private)堆栈实现。并且 $CLASSPATH 环境变量设置为空。

我在 Windows (Win 8.1) 上使用 JDK 1.7.0_25 测试了相同的程序。效果很好。

import java.util.*;
public class MyStackTest
{
    public static void main(String[] args){
        Stack<Integer> mys = new Stack<Integer>();
        mys.push(5);

        while ( ! mys.empty() ) {
            System.out.println(mys.peek());
            mys.pop();
        }
    }
 }

但是,在使用 javac 1.7.0_13 编译时,出现“找不到符号”错误:

$ javac MyStackTest.java  -Xlint
MyStackTest.java:9: error: cannot find symbol
        while ( ! mys.empty() ) {
                 ^
  symbol:   method empty()
  location: variable mys of type Stack<Integer>
1 error

我发现如果我将导入语句更改为

import java.util.Stack

程序编译良好。为什么“import java.util.”会导致问题?如何判断 java.util. 中的哪个类导致了问题?

谢谢!

最佳答案

您可能在与 MyStackTest 类相同的包中拥有 Stack 实现(在本例中为默认包名称)。注释掉 new Stack 之后的所有内容并打印出类类型。如果它不是 java.util.Stack 那么您就找到了答案。

import java.util.*;
public class MyStackTest
{
    public static void main(String[] args){
        Stack<Integer> mys = new Stack<Integer>();

        System.out.println(mys.getClass());
    }
}

另一种可能性是 mys.empty() 中包含非 UTF8 字符。尝试删除该行并再次手动输入。

关于OS X 10.9.1 上的 java "import java.util.*"编译失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21127253/

相关文章:

java - 重构严格的代码以消除检查instanceOf的if-else语句

java protobuf运行时正式示例不起作用

java - 无法使用 Java 启动 Spark

javascript - 如何使用java创建逗号分隔数组的数组

java - 如何在 Scala 中捕获中断的 java 进程

java - 使用 Java 库从 ODT 文档中提取字段

java - 在具有子面板的 jPanel 上绘图

java - 如何在JAVA中播放flv、mp4、avi格式视频?

java - 从链接列表中删除特定元素时遇到问题

java - 如何在南面板中放置 2 个带有边框的按钮?