Java无法在同一目录中找到.class中的符号

时间:2013-09-11 00:59:09

标签: java class object constructor symbols

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

MyStringLog animals = new MyStringLog("animals");

这应该构造一个名为animals的新MyStringLog对象,但是在编译时我得到2个错误,两个都没有找到MyStringLog符号。

2 个答案:

答案 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;