我有两个文件:MyStringLog.java(扩展ArrayStringLog)和TestDriver.java在同一目录中。为什么TestDriver.java不能从MyStringLog类中识别MyStringLog构造函数?在TestDriver.java中,我声明:
MyStringLog animals = new MyStringLog("animals");
这应该构造一个名为animals的新MyStringLog对象,但是在编译时我得到2个错误,两个都没有找到MyStringLog符号。
TestDriver.java:
public class TestDriver {
public static void main(String[] args) {
MyStringLog animals = new MyStringLog("animals");
animals.insert("dog");
}
}
答案 0 :(得分: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 StringLogInterface
到ArrayStringLog.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
答案 1 :(得分:0)
尝试将import MyStringLog;
添加到您的文件中。
您还在使用套餐吗?在这种情况下,它应该是import <package_name>.MyStringLog;