2013-03-08 10 views
6

Próbuję przyznać jeden plik dostępu do klasy .java w innym pliku .java. Chciałbym to zrobić w linii poleceń. Na przykład, jak to zrobić, używając dwóch poniższych plików?Dwa pliki java, w tym samym katalogu, jeden dostęp do innych klas/s?

pliku: "ToImport.java"

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

pliku: "TheImport.java"

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

Po wpisaniu javac ToImport.java otrzymuję żadnych błędów, ale gdy wpisuję javac TheImport.java pojawia się następujący błąd ,

Command Prompt Error Message

+0

w jakim katalogu zajęcia są umieszczone i jak i skąd uruchomić java –

+3

Najprawdopodobniej dzwonisz 'javac' z katalogu, w którym te dwa pliki są zlokalizowane. Oba muszą znajdować się w katalogu o nazwie "ABC" (nazwa pakietu), a będziesz musiał wywołać 'javac ABC \ TheImport.java' z katalogu zawierającego" ABC ". W każdym razie to moje przypuszczenie. – iamnotmaynard

+0

ponieważ oba pliki są w tym samym pakiecie i podane publicznie, to nie musisz się martwić o wywoływanie, wystarczy utworzyć obiekt, wystarczy, ale pytanie brzmi, jak jigar powiedział, jak go kompilujesz –

Odpowiedz

6

TheImport zależy od klasy ToImport. Tak więc podczas kompilowania TheImport kompilator musi albo skompilować ToImport lub mieć dostęp do już skompilowanej klasy ToImport.

Powiedzmy masz katalog, który wygląda następująco,

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

Ponadto załóżmy, że jesteś w katalogu src i chcesz skompilować do ../classes. Należy użyć jednego z następujących poleceń:

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

lub

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

Jeśli oba .java pliki zależało od siebie wtedy trzeba by skompilować je obie naraz, jak w pierwszym poleceniu.

Należy również pamiętać, że pakiety powinny być pisane małymi literami, aby zachować zgodność z konwencjami nazewnictwa Java.

Aby uruchomić program główny można wpisać,

cd ../classes 
java ABC.TheImport 
+0

Dobre wyjaśnienie –

+0

Doskonała odpowiedź. Możesz dodać zewnętrzne słoiki podczas kompilacji w samym '-cp' i powinny one': rozdzielone. Będziesz musiał również przekazać słoiki podczas uruchamiania pliku klasy za pomocą komendy 'java'. – backslashN

3

z paczki wiek zawierający .java pliki uruchomić:

javac *.java 

lub

javac TheImport.java ToImport.java 

Kompilator musi skompilować obu klas w tym samym czasie, to nie można indywidualnie opracować jedną klasę z zależnościami na innym.

+0

Kompilator nie " t muszą kompilować obie klasy w tym samym czasie. Może skompilować jeden, a następnie skompilować inny, który zależy od niego, używając parametru 'javac'' -cp', jak w odpowiedzi na to pytanie JB Nizeta. – Max

Powiązane problemy