0

我有两个文件:MyStringLog.java(它扩展了 ArrayStringLog)和 TestDriver.java 在同一个目录中。为什么 TestDriver.java 不能识别 MyStringLog 类中的 MyStringLog 构造函数?在 TestDriver.java 我声明:

MyStringLog animals = new MyStringLog("animals");

这应该构造一个名为 Animals 的新 MyStringLog 对象,但是当我编译时出现 2 个错误,即未找到 MyStringLog 符号。

  • ArrayStringLog.java:http://pastebin.com/Z624DRcm _
  • MyStringLog.java:http://pastebin.com/zaH2S3yg _
  • 测试驱动程序.java:

    public class TestDriver {
        public static void main(String[] args) {
            MyStringLog animals = new MyStringLog("animals");
            animals.insert("dog");
        }
    }
    
4

2 回答 2

1

我得到这个大致工作。为此...

对于文件ArrayStringLog.java,我删除了,implements StringLogInterface因为我根本无法访问该界面。这样做后,我删除了package ch02.stringLogs;. package...当我在仍然存在的情况下编译此文件时,我收到了错误:Exception in thread "main" java.lang.NoClassDefFoundError: ArrayStringLog (wrong name: ch02/stringLogs/ArrayStringLog)

然后在MyStringLog.java,我删除了import ch02.stringLogs.*;. 然后我保存并编译了代码,并运行了 TestDriver,我没有收到任何编译错误。

这使我相信您的错误源于package.ArrayStringLog.java


为了最终获得编译,我将所有四个文件(ArrayStringLog、MyStringLog、StringLogInterface、TestDriver)放入同一个目录,删除所有package...语句,添加回implements StringLogInterfaceArrayStringLog.java,编译每个文件,然后使用添加的toString方法运行 TestDriver输出是:

Log: animals

1. dog
2. cat

这是测试驱动程序:

public class TestDriver {
    public static void main(String[] args) {
        MyStringLog animals = new MyStringLog("animals");
        animals.insert("dog");
        animals.insert("cat");

        System.out.println(animals.toString());
    }
}

为了清楚起见,ArrayStringLog 以:

public class ArrayStringLog implements StringLogInterface
于 2013-09-11T01:01:43.550 回答
0

尝试添加import MyStringLog;到您的文件中。

你也在使用包吗?在这种情况下应该是import <package_name>.MyStringLog;

于 2013-09-11T01:04:50.693 回答