2013-03-08 8 views
6

Ich versuche, einen .java Dateizugriff auf die Klasse in einer anderen .java Datei zu gewähren. Ich würde das gerne in der Kommandozeile machen. Zum Beispiel, wie würde ich das mit den beiden folgenden Dateien tun?Zwei Java-Dateien, im gleichen Verzeichnis, einer Zugriff auf die anderen Klassen?

Datei: "ToImport.java"

package ABC; 
public class ToImport { 
    private String aName; 
    public ToImport(String Name) { 
     aName = Name; 
    } 
    public String toString() { 
     return("Text: " + aName); 
    } 
} 

Datei: "TheImport.java"

package ABC; 
public class TheImport { 
     public static void main(String[] args) { 
     ToImport abc = new ToImport("a"); 
     System.out.println("TEST: " + abc); 
    } 
} 

Wenn ich javac ToImport.java Typ I keine Fehler bekommen, aber wenn ich javac TheImport.java geben bekomme ich folgende Fehler ,

Command Prompt Error Message

+0

in welchem ​​Verzeichnis die Klassen geben könnte und von wo aus man Java –

+3

Höchstwahrscheinlich werden Sie 'javac' aus dem Verzeichnis aufrufen, in dem diese beiden Dateien werden lokalisiert. Sie müssen sich beide in einem Verzeichnis namens "ABC" (der Paketname) befinden, und Sie müssen "javac ABC \ TheImport.java" aus dem Verzeichnis aufrufen, das "ABC" enthält. Das ist meine Vermutung. – iamnotmaynard

+0

Da beide Dateien im selben Paket sind und als öffentlich deklariert sind, müssen Sie sich keine Gedanken über den Aufruf machen. Das Erstellen des Objekts ist ausreichend, aber die Frage ist, wie Jigar gesagt hat, wie Sie es kompilieren –

Antwort

6

TheImport ist abhängig von der Klasse ToImport. Wenn Sie also TheImport kompilieren, muss der Compiler entweder ToImport kompilieren oder auf die bereits kompilierte Klasse ToImport zugreifen.

Angenommen, Sie haben ein Verzeichnis, das wie folgt aussieht,

src 
└── ABC 
    ├── TheImport.java 
    └── ToImport.java 

Darüber hinaus lassen Sie uns sagen, dass Sie in dem Verzeichnis sind src und wollen ../classes kompilieren. Sie müssen eine der folgenden Befehle:

javac -d ../classes ABC/ToImport.java ABC/TheImport.java 

oder

javac -d ../classes ABC/ToImport.java 
javac -cp ../classes -d ../classes ABC/TheImport.java 

Wenn beide .java Dateien aufeinander angewiesen dann würden Sie sie beide auf einmal wie im ersten Befehl compilieren.

Beachten Sie auch, dass Pakete alle Kleinbuchstaben sein sollten, um die Java-Namenskonventionen einzuhalten.

Um das Hauptprogramm laufen Sie werden platziert und wie

cd ../classes 
java ABC.TheImport 
+0

Gute Erklärung –

+0

Perfekte Antwort. Sie könnten externe Dateien hinzufügen, während Sie in der '-cp' selbst kompilieren und sie sollten': 'getrennt werden. Sie müssen auch die Gläser übergeben, während Sie die Klassendatei mit dem Befehl 'java' ausführen. – backslashN

3

aus der Packung Alter der .java-Dateien enthält, läuft:

javac *.java 

oder

javac TheImport.java ToImport.java 

Der Compiler beiden Klassen zur gleichen Zeit kompilieren muss, ist es nicht einzeln kann eine einzige Klasse mit Abhängigkeiten von einem anderen kompilieren.

+0

Der Compiler doesn ' Ich muss beide Klassen gleichzeitig kompilieren. Es kann einen kompilieren und dann den anderen, der davon abhängt, mit dem 'javac' -Parameter' -cp' kompilieren, wie in der Antwort auf diese Frage von JB Nizet. – Max

Verwandte Themen