Java can';在同一目录中找不到.class中的符号

Java can';在同一目录中找不到.class中的符号,java,class,object,constructor,symbols,Java,Class,Object,Constructor,Symbols,我有两个文件:MyStringLog.java(它扩展了ArrayStringLog)和TestDriver.java在同一个目录中。为什么TestDriver.java不能从MyStringLog类中识别MyStringLog构造函数?在TestDriver.java中,我声明: MyStringLog animals = new MyStringLog("animals"); 这应该是为了构造一个名为animals的新MyStringLog对象,但我在编译时发现两个错误,都是找不到MySt

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

MyStringLog animals = new MyStringLog("animals");
这应该是为了构造一个名为animals的新MyStringLog对象,但我在编译时发现两个错误,都是找不到MyStringLog符号

  • ArrayStringLog.java:
  • MyStringLog.java:
  • TestDriver.java:

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

我让它大致起作用。要这样做

对于文件
ArrayStringLog.java
,我删除了
implements StringLogiInterface
,因为我根本没有访问该接口的权限。这样做之后,我删除了
包ch02.stringLogs。当我编译这个文件时,
包…
仍然在那里,我收到了错误:
线程“main”java.lang.NoClassDefFoundError中的异常:ArrayStringLog(错误名称:ch02/stringLogs/ArrayStringLog)

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

这使我相信,您的错误源于
ArrayStringLog.java
中的
语句


为了最终得到编译,我将所有四个文件(ArrayStringLog、MyStringLog、StringLogiInterface、TestDriver)放在同一个目录中,删除所有
包…
语句,
实现StringLogiInterface
添加回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

尝试添加
导入MyStringLog到您的文件


你也在使用软件包吗?在这种情况下,它应该是
import.MyStringLog

是否使用import语句导入
MyStringLog
?我认为需要将此当前目录添加到类路径中。类似于在命令行中添加“-cp.”。你说它们在同一个目录中,但它们有相同的包吗?你是对的Nicolas。通过附加:。在我的类路径声明结束时,我所有的问题都消失了。谢谢你的帮助。哎呀,把它贴在这里是个打字错误。我的文件没有打字错误。注意,上面的评论是对我以前的回答的回应,不再适用。这些是我们正在使用的所有文件。我看了一位同学编译的代码,他们不必碰ArrayStringLog.java。看我修改过的答案。如果您还有更多问题,请留言。我从ArrayStringLog.java中删除了“implements StringLogiInterface”。我从所有文件中删除了“package ch02.stringLogs;”。我把它们都放在同一个目录中,但是MyStringLog.java不会编译,TestDriver.java也不会编译。我忘记删除什么了吗?这会导致错误“TestDriver.java:1:error:”.“expected import MyStringLog;”,箭头指向分号。ArrayStringLog类位于ch02.stringLogs包中,MyStringLog.java导入该包。使用
import ch02.stringLogs.mystringLogs然后