Java kann nicht finden das symbol aus .Klasse im gleichen Verzeichnis
Habe ich zwei Dateien: MyStringLog.java (die sich ArrayStringLog) und TestDriver.java in das gleiche Verzeichnis. Warum nicht TestDriver.java erkennen die MyStringLog Konstruktor von der MyStringLog Klasse? In TestDriver.java ich erkläre:
MyStringLog animals = new MyStringLog("animals");
Diese soll den Bau einer neuen MyStringLog-Objekt mit dem Namen Tiere, aber ich bekomme 2 errors wenn ich compile, beide, dass MyStringLog symbol nicht gefunden wird.
- ArrayStringLog.java: http://pastebin.com/Z624DRcm
- MyStringLog.java:http://pastebin.com/zaH2S3yg
- TestDriver.java:
public class TestDriver { public static void main(String[] args) { MyStringLog animals = new MyStringLog("animals"); animals.insert("dog"); } }
sind Sie Import
Ich denke, man muss hinzufügen, das aktuelle Verzeichnis im Klassenpfad. so etwas wie hinzufügen "-cp ." an die Befehlszeile.
Sie sagen, Sie sind im gleichen Verzeichnis, aber haben Sie das gleiche Paket?
Sie waren Recht Nicolas. Durch anfügen :. zum Ende meines CLASSPATH Erklärung alle meine Probleme waren Weg. Vielen Dank für die Hilfe.
MyStringLog
mit einer import-Anweisung?Ich denke, man muss hinzufügen, das aktuelle Verzeichnis im Klassenpfad. so etwas wie hinzufügen "-cp ." an die Befehlszeile.
Sie sagen, Sie sind im gleichen Verzeichnis, aber haben Sie das gleiche Paket?
Sie waren Recht Nicolas. Durch anfügen :. zum Ende meines CLASSPATH Erklärung alle meine Probleme waren Weg. Vielen Dank für die Hilfe.
InformationsquelleAutor Van | 2013-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich diese zu grob arbeiten. So... zu tun,
für die Datei
ArrayStringLog.java
entfernte ich dieimplements StringLogInterface
weil ich einfach nicht Zugriff auf die Schnittstelle. Danach entfernte ich diepackage ch02.stringLogs;
. Wenn ich kompiliert habe diese Datei mit derpackage...
noch da, ich erhielt den Fehler:Exception in thread "main" java.lang.NoClassDefFoundError: ArrayStringLog (wrong name: ch02/stringLogs/ArrayStringLog)
Dann in
MyStringLog.java
entfernte ich dieimport ch02.stringLogs.*;
. Ich habe dann gespeichert und kompiliert den code, und ran an die Testfahrer, die ich erhielt keine Kompilierungsfehler.Dies führt mich zu glauben, dass Ihr Fehler ergibt sich aus der
package
Anweisung inArrayStringLog.java
.Endlich mal eine Zusammenstellung, ich habe alle vier Dateien (ArrayStringLog, MyStringLog, StringLogInterface, Testfahrer) in das gleiche Verzeichnis, entfernt
package...
Aussagen, wieder Hinzugefügtimplements StringLogInterface
zu ArrayStringLog.java, kompiliert, und dann lief Testfahrer mit einem zusätzlichentoString
Methode aus, die die Ausgabe war:Hier war die test-Fahrer:
Klar zu machen, ArrayStringLog beginnt mit:
Hinweis: der obige Kommentar war die Antwort auf meine Vorherige Antwort und nicht mehr gilt.
dropbox.com/s/6koo8eim16xcskb/bookFiles.zip diese sind alle Dateien, die wir verwenden. Ich sah ein Klassenkamerad ist code, der kompiliert und Sie nicht zu berühren ArrayStringLog.java.
Siehe meine überarbeitete Antwort. Wenn Sie weitere Fragen haben, Kommentar entfernt.
Ich entfernt "implementiert StringLogInterface" aus ArrayStringLog.java. Ich entfernt " - Paket ch02.stringLogs;" von allen Dateien. Ich legte Sie alle in das gleiche Verzeichnis, aber MyStringLog.java wird nicht kompiliert, und weder TestDriver.java. Habe ich vergessen etwas entfernen?
InformationsquelleAutor John the King
versuchen Sie
import MyStringLog;
zu deiner Datei.Außerdem sind Sie mit Paketen? In dem Fall sollte es
import <package_name>.MyStringLog;
verwenden
import ch02.stringLogs.MyStringLog;
dannInformationsquelleAutor vandale