I have two files: MyStringLog.java (which extends ArrayStringLog) and TestDriver.java in the same directory. Why doesn't TestDriver.java recognize the MyStringLog constructor from the MyStringLog class? In TestDriver.java I declare:
MyStringLog animals = new MyStringLog("animals");
This is supposed to construct a new MyStringLog object named animals, but I get 2 errors when I compile, both, that MyStringLog symbol is not found.
I got this to roughly work. To do so...
for the file ArrayStringLog.java
, I removed the implements StringLogInterface
because I simply don't have access to that interface. After doing so, I removed the package ch02.stringLogs;
. When I compiled this file with the package...
still there, I recieved the error: Exception in thread "main" java.lang.NoClassDefFoundError: ArrayStringLog (wrong name: ch02/stringLogs/ArrayStringLog)
Then in MyStringLog.java
, I removed the import ch02.stringLogs.*;
. I then saved and compiled the code, and ran the TestDriver, to which I received no compilation errors.
This leads me to believe that your error stems from the package
statement in ArrayStringLog.java
.
To finally get a compilation, I put all four files (ArrayStringLog, MyStringLog, StringLogInterface, TestDriver) into the same directory, removed any package...
statements, added back implements StringLogInterface
to ArrayStringLog.java, compiled each one, and then ran TestDriver with an added toString
method from which the output was:
Log: animals
1. dog
2. cat
Here was the test driver:
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());
}
}
To make clear, ArrayStringLog begins with:
public class ArrayStringLog implements StringLogInterface
try adding import MyStringLog;
to your file.
Also are you using packages? In which case it should be import <package_name>.MyStringLog;