Java can';在同一目录中找不到.class中的符号
我有两个文件:MyStringLog.java(它扩展了ArrayStringLog)和TestDriver.java在同一个目录中。为什么TestDriver.java不能从MyStringLog类中识别MyStringLog构造函数?在TestDriver.java中,我声明: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 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代码>然后